題目描述:
給定乙個二叉搜尋樹的根節點root,返回樹中任意兩節點的差的最小值。
示例:輸入:root = [4, 2, 6, 1, 3, null, null]
輸出:1
解釋:注意,root是根節點物件(treenode),而不是陣列。
注意:二叉樹的大小範圍在2到100。
二叉樹總是有效的,每個節點的值都是整數,且不重複。
解題思路:
首先,使用乙個叫作arr的vector儲存所有節點的val(通過遞迴);然後用sort函式(定義在algorithm標頭檔案中)將arr中的元素按從小到大的順序排列(這裡這麼做的理由是,按照從小到大的順序排列後,最小的差只可能出現在相鄰元素之差中,而不可能出現在非相鄰元素之差中,可以減少計算次數);之後計算相鄰元素的差,並將其儲存在temp中;最後再次用sort函式將temp中的元素按從小到大的順序排列。此時,temp中的第乙個元素即為任意兩節點的差的最小值。
**如下:
/*
definition for a binary tree node.
struct treenode
};*/
class
solution
intmindiffinbst
(treenode* root)
};
解後反思:該**適用於任意二叉樹(而不只是二叉搜尋樹),並且允許節點數值重複。 783 二叉搜尋樹節點最小距離
給定乙個二叉搜尋樹的根結點 root,返回樹中任意兩節點的差的最小值。示例 輸入 root 4,2,6,1,3,null,null 輸出 1 解釋 注意,root是樹結點物件 treenode object 而不是陣列。給定的樹 4,2,6,1,3,null,null 可表示為下圖 4 2 6 1 ...
783 二叉搜尋樹節點最小距離
題目描述 給定乙個二叉搜尋樹的根節點 root,返回樹中任意兩節點的差的最小值。示例 輸入 root 4,2,6,1,3,null,null 輸出 1 解釋 注意,root是樹節點物件 treenode object 而不是陣列。給定的樹 4,2,6,1,3,null,null 可表示為下圖 最小的...
783 二叉搜尋樹節點最小距離
class solution 中序遍歷 在遍歷每乙個節點的時候,儲存上乙個遍歷的節點,然後計算差值 由於是中序遍歷,遍歷的順序是從小到大,因此root.val prev.val始終大於0 mindiffinbst root.left if prev null prev root mindiffinb...