給定一棵二叉樹,判斷它是否是映象對稱的

2021-08-30 22:00:45 字數 1017 閱讀 3674

在這裡先解釋一下映象對稱的概念,顧名思義,就像人站在鏡子前面面對自己一樣,看到的一切都是對稱的。鏡中的反射與現實中的人具有相同的頭部,但反射的右臂對應於人的左臂,反之亦然。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:

方法一:(遞迴)

我們可以這麼想,如果一棵樹的左子樹和右子樹映象對稱的話,那麼這棵樹一定是映象對稱的,例如下面這棵樹:

那麼這樣一來,我們可以把問題轉化為兩棵樹在什麼情況下互為映象?

如果兩棵樹滿足以下條件則互為映象:

1.它們的兩個根結點具有相同的值。

2.每個樹的右子樹都與另乙個樹的左子樹映象對稱。

例如下面:

**如下:

/**

* definition for a binary tree node.

* struct treenode ;

*/bool ismirror

(struct treenode *t1,

struct treenode *t2)

bool issymmetric

(struct treenode *root)

判斷一棵二叉樹是否是完全二叉樹

層次遍歷乙個二叉樹,掃瞄到某個結點左孩子或右孩子為空時即停止,檢查此時佇列內所有結點是否均為葉子結點 include include define false 0 define true 1typedef int status typedef int elemtype typedef struct ...

判斷一棵二叉樹是否是平衡二叉樹

思路 遞迴方式判斷,返回的資訊應該有兩個 1 這棵樹是否是平衡的 2 這棵樹的高度為多少 public class isbalancedtree public static class returndata public static returndata process node head ret...

如何判斷一棵二叉樹是否是平衡二叉樹

平衡二叉樹的定義,如果任意節點的左右子樹的深度相差不超過1,那這棵樹就是平衡二叉樹。演算法思路 先編寫乙個計算二叉樹深度的函式getdepth,利用遞迴實現 然後再遞迴判斷每個節點的左右子樹的深度是否相差1 static int getdepth binnode root 注意這裡的 1,對應於ro...