請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
1
/ \ 2
2/ \ / \34
43
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
1
/ \ 2
2 \ \
33
示例 1:
輸入:root =[1
,2,2
,3,4
,4,3
]輸出:true
示例 2:
輸入:root =[1
,2,2
,null,
3,null,3]
輸出:false
限制:
0 <= 節點個數 <= 1000
遞迴法
思路:使用乙個輔助函式,分別判斷根節點的左孩子結點 p1 和右孩子結點 p2 。遞迴結束的條件如下
若 p1 和 p2 都為空,則返回true;
若 p1 和 p2 有乙個為空,另乙個不為空,則返回 false;
若當前 p1 和 p2 都不為空,但是 p1->val != p2->val,返回 false;
然後遞迴遍歷 (p1->left, p2->right) && (p1->right, p2->left)。
**如下:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
bool
symmetric
(treenode* p1, treenode* p2)
};
劍指offer 對稱的二叉樹(C )
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。首先說一下做這道題目最初的錯誤想法 想到了二叉樹的中序遍歷,中序遍歷序列對稱則二叉樹對稱,於是寫好了程式,系統報錯,給出了 left 層序遍歷 例子,這樣的二叉樹是非對稱的,但是它的中序遍歷...
劍指Offer 二叉樹 對稱的二叉樹
含有兩道題,都從樹的遞迴入手 請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。解題思路 映象翻 只需要遍歷二叉樹,每次訪問乙個結點時,交換其左右子樹。實現 definition for a binary tree node.class treenode def init self,x self....
劍指offer 對稱的二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路 複製一顆二叉樹,在該二叉樹的基礎上求得二叉樹的映象,同時遍歷兩顆二叉樹,判斷每乙個節點是否相同。public class solution private treenode copy ...