面試題28 對稱的二叉樹

2021-10-04 19:18:16 字數 1052 閱讀 1537

題目:

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。

例如,二叉樹 [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

示例 1:

輸入:root = [1,2,2,3,4,4,3]

輸出:true

示例 2:

輸入:root = [1,2,2,null,3,null,3]

輸出:false

限制:0 <= 節點個數 <= 1000

解題思路:

1.空樹時,返回true

2.比較根節點的值,不等時,返回false

3.先遍歷根節點,再遍歷右子節點,最後遍歷左子節點得到的序列,與先遍歷根節點,再遍歷左子節點,最後遍歷右子節點得到的序列相比較,若相等,則返回true,否則返回false

**實現:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

return issymmetrictwo(root,root);

}bool issymmetrictwo(treenode* t1,treenode* t2)

if(nullptr==t1||nullptr==t2)

if(t1->val!=t2->val)

return issymmetrictwo(t1->left,t2->right)&&issymmetrictwo(t1->right,t2->left);}};

耗時和記憶體使用情況:

面試題28 對稱二叉樹

題目 請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。方法 遞迴 root1 的左子樹和 root2 的右子樹比較,root1 的右子樹和 root2 的左子樹比較,遞迴下去直到 root1 和 roo...

面試題28 對稱的二叉樹

題目 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路 我們通常有三種不同的二叉樹遍歷演算法,即前序遍歷 中序遍歷和後序遍歷。在這三種遍歷演算法中,都是先遍歷左子結點再遍歷右子結點。以前序遍歷為例,我們可以定義乙個遍歷演算法,先遍歷右...

面試題28 對稱的二叉樹

思路 採用遞迴,先將樹分為兩株,即根節點的左子樹和柚子樹。然後利用函式,依次比較左子樹和柚子樹是否對稱 左子樹的左子樹是否等於柚子樹的柚子樹等條件 definition for a binary tree node.struct treenode class solution return isle...