您好,登錄后才能下訂單哦!
本篇內容主要講解“如何實現二叉搜索樹節點最小距離”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何實現二叉搜索樹節點最小距離”吧!
給你一個二叉搜索樹的根節點 root ,返回樹中任意兩不同節點值之間的最小差值 。
示例 1:
輸入:root = [4,2,6,1,3]
輸出:1
示例 2:
輸入:root = [1,0,48,null,null,12,49]
輸出:1
提示:
樹中節點數目在范圍 [2, 100] 內
0 <= Node.val <= 10^5
題目分析:
1,根據二叉搜索樹的性質,我們可以采取中序遍歷的方式獲取排序后的結果
2,由于節點的值在[0,10^5]范圍內,節點值的差值在[-10^5-1,10^5+1]范圍內
3,需要用一個pre記錄前驅節點
4,針對二叉搜索樹類型的題目,通過遍歷可以得到有序的數列,然后可以求差值
5,根據題意,默認是升序
代碼實現
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func minDiffInBST(root *TreeNode) int {
_,diff:=bst(root,-100001,100001)
return diff
}
func bst(root*TreeNode,pre,diff int)(int,int){
if root==nil{
return pre,diff
}
pre,diff=bst(root.Left,pre,diff)
if root.Val-pre<diff{
diff=root.Val-pre
}
pre=root.Val
pre,diff=bst(root.Right,pre,diff)
return pre,diff
}
解法二:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var a[]int
func minDiffInBST(root *TreeNode) int {
a=nil
visit(root)
min:=100
for i:=0;i<len(a)-1;i++{
if min>a[i+1]-a[i]{
min=a[i+1]-a[i]
}
}
return min
}
func visit(root *TreeNode){
if root==nil{
return
}
visit(root.Left)
a=append(a,root.Val)
visit(root.Right)
}
到此,相信大家對“如何實現二叉搜索樹節點最小距離”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。