struct treenode
};
描述:給定兩個二叉樹,判斷樹的結構和對應節點值是否相同
思路:分四種情況,兩節點都為空節點,認為此節點同;乙個為空乙個不為空,認為此節點不同;都不為空還需判斷值是否相同。
bool
issame
(treenode* p, treenode* q)
另一種**一樣只是調換了判斷順序
如下:
bool
issametree
(treenode* p, treenode* q)
最好採用第一種,思路清晰,初學時方便記憶不至於混淆,第二種用於理解和了解**結構的多變性,學習和優化**也很重要
描述:判斷給定二叉樹是否關於根節點左右對稱
class
solution
bool
issymmetric
(treenode* p, treenode* q)};
##
是不是發現**結構如此相似。
描述:判斷一棵樹t是不是另一顆樹s的子結構,假設兩顆樹非空。注意,s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。
思路:遍歷節點,以當前節點為根節點的子樹和另一顆樹對應節點比較,通過如下**結構理解
class
solution
;
issame就是上述相同的樹中的**,我們只需要遍歷s中的各節點,以當前節點的子結構與t比較是否相同即可。
完整**如下:
class
solution
bool
issame
(treenode* s,treenode* t)
};
還有一種思路是先找值相同的節點,再比較,可節省一些呼叫開銷,在**上的表現就是加一行判定就可以
if
(s->val == t-
>val)
二叉樹的相關題目
目錄 1 求二叉樹的遍歷順序為自下至上,自右至左的層序遍歷序列 2 判斷二叉樹是否為完全二叉樹 3 統計二叉樹中雙分支結點的個數 4 求先序遍歷序列中第k個結點的值 5 求二叉樹的高度 6 判斷二叉樹是否為二叉排序樹 7 求出二叉排序樹中結點所在的層數 演算法思想 使用層序遍歷。二叉樹正常的層序遍歷...
概率相關的題目
1 乙個隨機數產生器以概率p生成0,以概率 1 p 生成1,怎樣生成等概率的0和1?如果用這個隨機數產生器產生兩個位,出現00的概率為p 2,出現01的概率為p 1 p 出現10的概率為 1 p p,出現11的概率為 1 p 2。看到沒有,出現01和10的概率相等。那麼我們就可以用這個隨機數生成器每...
BST的相關題目
題目大意 給出乙個序列,你需要判斷它是不是乙個bst的先序遍歷序列或者是不是bst映象的先序序列 所謂的映象就是所有的根結點的左子樹的所有結點值大於對應的根結點的值,而右子樹的所有結點值大於對應的根結點的值 如果是的話,就輸出yes以及樹的後序序列 如果不是的話,就輸出no 樣例 輸入 78 6 5...