AcWing 39 對稱的二叉樹

2021-09-12 02:54:33 字數 844 閱讀 2568

題目描述:

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。

如果一棵二叉樹和它的映象一樣,那麼它是對稱的。

樣例

如下圖所示二叉樹[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]為對稱二叉樹:

1/ \

2 2

/ \ / \

3 4 4 3

如下圖所示二叉樹[1,2,2,null,4,4,3,null,null,null,null,null,null]不是對稱二叉樹:

1/ \

2 2

\ / \

4 4 3

分析:

首先分析下能不能單純的使用issymmetric遞迴實現這個功能,假設該函式可以實現判斷一棵樹是否對稱的功能,那麼對於其子問題,左子樹對稱,右子樹也對稱,如何推出整棵樹對稱呢?發現做不到,於是需要單獨設定函式。

分析對稱二叉樹的性質,發現根結點的左右孩子相等,而且左孩子的右孩子結點等於右孩子的左孩子結點。於是我們定義ismirror函式來判斷是否兩棵樹對稱,如果這兩棵樹對稱,那麼以這兩棵樹的根結點作為某結點的左右孩子得到的新樹必然是對稱的。判斷需要兩步,其一,這兩棵樹的根結點相等;其二,第一棵樹的左右孩子與第二棵樹的右左孩子對稱。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

bool ismirror(treenode *l,treenode *r)

};

AcWing 39 對稱的二叉樹(python版)

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。樣例 對於一棵對稱的二叉樹,需要判斷其根節點的左右兩棵子樹是否為映象,1 左子樹的根節點與右子樹的根節點值相等 2 左子樹根節點的左孩子與右子樹根節點的右孩子互為映象,左子樹根節點的右孩子與右子樹根節點的左...

39 對稱的二叉樹

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。樣例如下圖所示二叉樹 1,2,2,3,4,4,3,null,null,null,null,null,null,null,null 為對稱二叉樹 1 2 2 3 4 4 3 如下圖所示二叉樹 1,2,2,nu...

39 對稱的二叉樹

和上一題差不多,上一題是變成映象,這一題是判斷是不是映象。definition for a binary tree node.struct treenode class solution bool dfs treenode p,treenode q else 上面的if else 可以直接寫成如下 ...