題目:
思路一:
分析;由於二叉搜尋樹的特性,右子樹方面:2>3>1。其絕對值最小值在3-1和2-1 之間產生,而左子樹:1>4>5,絕對值最小值在1-4和4-5之間 產生,所以,根據中序遍歷的順序,將中序遍歷的結果放進陣列,然後前面的值減去後 面的,得到差值的最小值。
步驟:中序遍歷將節點放進陣列裡面;
從陣列開頭,相鄰位置相減,取差值的最小值作為返回值
class
solution
intgetminimumdifference
(treenode* root)
return nums;}}
;
思路二:遞迴優化
分析:不用將節點的值存在陣列裡面,在中序遍歷的時候直接得到差值的絕對值,關鍵在於如何將上乙個節點儲存下來:用乙個指標將訪問到的節點儲存下來
本**中 用乙個pre節點記錄一下cur節點的前乙個節點
//將前乙個節點儲存下來
inorder
(root-
>right);}
intgetminimumdifference
(treenode* root)
};
int
getminimumdifference
(treenode* root)
else
pre=cur;
cur=cur-
>right;}}
return result;
}
LeetCode 530 二叉搜尋樹的最小絕對差
給定乙個所有節點為非負值的二叉搜尋樹,求樹中任意兩節點的差的絕對值的最小值。示例 輸入 1 3 2輸出 1 解釋 最小絕對差為1,其中 2 和 1 的差的絕對值為 1 或者 2 和 3 注意 樹中至少有2個節點。主要是用來中序遍歷的方法 definition for a binary tree no...
LeetCode530 二叉搜尋樹的最小絕對差
題目 又是常見的bst,要利用bst的性質,即中序遍歷是有序遞增序列。法一 中序遍歷 1 class solution 10 11int getminimumdifference treenode root 18return min 19 2021 法二 優化後的中序遍歷,不開陣列,在遞迴過程中應用...
leetcode530 二叉樹的最小絕對差
題目非常簡單,之所以記錄一下是因為總是忽略中序遍歷的特性 排序二叉樹中序遍歷會得到乙個有序陣列。該特性很實用也很神奇,就像一顆滿二叉排序樹的根節點必然是對應有序陣列的中點一樣。該特性可以幫助我們更好的理解排序樹的結構。listre new linkedlist int min integer.max...