請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。
一般關於二叉樹的題目,第一直覺是往遞迴上面靠,當然了,本題適不適合還暫時不知道。
所謂映象二叉樹,舉個例子
1 1
/ \ / \
2 3 ---映象---> 3 2
/ \ / \ /\
4 5 6 6 5 4
如上圖,這個二叉樹就不是對稱的。
1 1
/ \ / \
2 2 ---映象---> 2 2
/ \ / \
4 4 4 4
可以看出來,對於乙個節點p來說
如果它的left為空且right為空,則p的左右子樹對稱;
如果left不為空且right不為空,
如果left的值不等於right的值,p的左右子樹不對稱
否則遞迴檢查left.left和right.right、left.right和right.left,為什麼是這兩對節點呢?因為作映象操作之後,剛好right.right會落到left.left的位置,right.left會落到left.right的位置,所以只要left.left和right.right、left.right和right.left對稱即可,後面的可以遞迴的檢查下去。
function treenode(x)
function issymmetrical(root)
function check(l, r)
else if(l !== null && r !== null)
else
}
刷演算法 對稱的二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。一般關於二叉樹的題目,第一直覺是往遞迴上面靠,當然了,本題適不適合還暫時不知道。所謂映象二叉樹,舉個例子 1 1 2 3 映象 3 2 4 5 6 6 5 4 複製 如上圖,這個二叉樹就不是...
演算法 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3程式入口 treenode root2 new treenode 9 root2.left...
演算法 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。參考官方解法,使用兩種方式完成 1.遞迴 如果乙個樹的左子樹與右子樹映象對稱,那麼這個樹是對稱的。如果同時滿足下面的條件,兩個樹互為映象 它們的兩個根結點具有相同的值每個樹的右子樹都與另乙個樹的左子樹映象對稱 我們可以實現這樣乙個遞迴函式,通過 同步移動 兩個...