中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中如何驗證二叉搜索樹

發布時間:2021-12-13 16:21:04 來源:億速云 閱讀:213 作者:柒染 欄目:大數據

這篇文章給大家介紹python中如何驗證二叉搜索樹,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

給定一個二叉樹,判斷其是否是一個有效的二叉搜索樹。

假設一個二叉搜索樹具有如下特征:

  • 節點的左子樹只包含小于當前節點的數。

  • 節點的右子樹只包含大于當前節點的數。

  • 所有左子樹和右子樹自身必須也是二叉搜索樹。

示例 1:

輸入:
   2
  / \
 1   3
輸出: true

示例 2:

輸入:
   5
  / \
 1   4
     / \
    3   6
輸出: false
解釋: 輸入為: [5,1,4,null,null,3,6]。
     根節點的值為 5 ,但是其右子節點值為 4 。

解題思路:

1,中序遍歷

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */var last=^(int(^uint(0) >> 1))func isValidBST(root *TreeNode) bool {    if root!=nil{        if!isValidBST(root.Left){            return false        }        if last>=root.Val{            return false        }        last=root.Val        if !isValidBST(root.Right){            return false        }    }    return true}

方法二:

遞歸:根節點>大于左節點最大值,小于右節點最小值

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func isValidBST(root *TreeNode) bool {    if root==nil{        return true    }    if root.Left!=nil&& root.Right!=nil{        l:=maxBST(root.Left)        r:=minBST(root.Right)        return isValidBST(root.Left)&&isValidBST(root.Right)&&l<root.Val && root.Val<r    }    if root.Left!=nil{         l:=maxBST(root.Left)        return isValidBST(root.Left)&&l<root.Val    }    if root.Right!=nil{         r:=minBST(root.Right)        return isValidBST(root.Right)&&root.Val<r    }    return true}
func maxBST(root *TreeNode)int{    if root.Right!=nil{        return maxBST(root.Right)    }    return root.Val}
func minBST(root *TreeNode)int{    if root.Left!=nil{        return minBST(root.Left)    }    return root.Val}

關于python中如何驗證二叉搜索樹就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

公主岭市| 竹溪县| 获嘉县| 九江市| 遂川县| 铁岭市| 安达市| 舞阳县| 镇赉县| 交口县| 田林县| 阿拉善盟| 哈密市| 东阳市| 嫩江县| 灵山县| 宝山区| 峨山| 恩平市| 通城县| 金塔县| 大宁县| 黄山市| 远安县| 沅江市| 洛南县| 榆林市| 惠水县| 宁津县| 鹿邑县| 犍为县| 新干县| 泰来县| 花莲市| 永善县| 萨迦县| 友谊县| 历史| 华坪县| 怀柔区| 富平县|