96.不同的二叉搜尋樹
98.驗證二叉搜尋樹
**101.對稱二叉樹
如果用遞迴的方法來寫,此題非常的簡單,是乙個基礎題,要熟悉的是非遞迴的迭代版本,利用棧來求解
資料結構如果學的足夠紮實,就應該知道這是乙個很經典的問題,其實質就是問你,按照1…n的順序入棧,出棧的序列有多少種,其實就是卡特蘭數,只要知道卡特蘭數怎麼算,直接用公式就可以:
判斷一顆樹是否bst,可以分解成幾個小問題:
左子樹是否bst?
右子樹是否bst?
當前節點的值,是否大於左子樹中的所有值,並且小於右子樹中的所有值?
為了解決這個問題,只需要在遞迴判斷左右子樹,並且在遞迴過程中,保留上下界的值。
bst的特徵就是中序遍歷一定是公升序的,很容易想到將其中序遍歷的序列儲存起來判斷是否公升序,但是這樣會帶來額外的儲存空間,實際上沒有必要,因為遍歷時,當前值一定會比上乙個值大,只需要在遍歷的過程中逐個判斷即可,沒必要把整個序列存起來。
而迭代遍歷的過程,可以參考94題。
如圖所示,要判斷一棵樹是不是對稱二叉樹,關鍵在於它的左右子樹是否對稱,左右子樹(設為t1和t2)對稱的條件為:
根節點的值相同
t1的左子樹和t2的右子樹相同,t1的右子樹和t2的左子樹相同
由此就可以寫出**:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
bool
issymmetric
(treenode* root)
};
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
return
true;}
};
leetcode熱題100刷題筆記 2
62.不同路徑 64.最小路徑和 70.爬樓梯 這道題很容易看出來可以用dfs解決,但是其中有乙個容易迷惑的點,就是所謂的 最長路徑 並不一定經過根節點!因此,我們需要在dfs的過程中,對每乙個節點,計算其左子樹的高度l以及右子樹的高度r,那麼以當前節點為起點的路徑,經過的節點的最大值就是l r 1...
熱題HOT 100 簡單題 4 6
53.最大子序和 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解...
熱題HOT 100 簡單題10 12
141.環形鍊錶 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個...