在這裡先解釋一下映象對稱的概念,顧名思義,就像人站在鏡子前面面對自己一樣,看到的一切都是對稱的。鏡中的反射與現實中的人具有相同的頭部,但反射的右臂對應於人的左臂,反之亦然。例如,二叉樹 [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...