日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法:验证二叉搜索树

發布時間:2025/6/15 编程问答 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法:验证二叉搜索树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

節點的左子樹只包含小于當前節點的數。
節點的右子樹只包含大于當前節點的數。
所有左子樹和右子樹自身必須也是二叉搜索樹。
示例 1:

輸入:
2
/
1 3
輸出: true
示例 2:

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

func isValidBST(root *TreeNode) bool {return helper(root, math.MinInt64, math.MaxInt64) }func helper(root *TreeNode, lower, upper int) bool {if root == nil {return true}if root.Val <= lower || root.Val >= upper {return false}return helper(root.Left, lower, root.Val) && helper(root.Right, root.Val, upper) }//先進棧在不斷彈棧 func isValidBST(root *TreeNode) bool {stack := []*TreeNode{}//inorder 是一個最小數inorder := math.MinInt64for len(stack) > 0 || root != nil {for root != nil {stack = append(stack, root)root = root.Left}//取棧頂的元素root = stack[len(stack)-1]//彈棧stack = stack[:len(stack)-1]if root.Val <= inorder {return false}inorder = root.Valroot = root.Right}return true }

?

總結

以上是生活随笔為你收集整理的算法:验证二叉搜索树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。