二叉搜尋樹節點最小距離(C )

2021-10-09 17:59:20 字數 716 閱讀 5902

題目描述:

給定乙個二叉搜尋樹的根節點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...