typedef struct node bn;
不用關心輸入,二叉樹構造和刪除過程已經在main函式中實現,需要你們實現函式
int issymmetric(bn* root);
來判斷一棵二叉樹是否對稱,對稱返回1,非對稱返回0.
node結構要按照上面的**在symmetric.h中進行定義。
注意被測試二叉樹不一定是滿二叉樹。如果樹不存在(根節點指標為空)返回0。如果除根節點外沒有任何的其他節點返回1。
#include
#include
#define maxd 50
typedef struct node bn;
int islink(bn *q, bn *p)
if (p != null && q != null && q->x == p->x) else
}int issymmetric(bn* proot)
return islink(proot->left, proot->right);
}//用佇列建二叉樹
void buildtree(bn** root)
while
(head != tail)
}//後序遍歷釋放記憶體
void
freetree
(bn* root)
}int
main
()
判斷對稱二叉樹
相等條件 1.走到最底層還一樣,說明相等 root.left null root.right null,return true 2.一端有葉子一端沒有葉子,肯定不想等 if left null right null return false 3.值相等 左的右等於右的左 左的左等於右的右 class...
判斷二叉樹是否是對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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的左子樹與根節點2右子樹相同 根節點1...
JavaScript判斷對稱二叉樹
對稱二叉樹 非對稱二叉樹 實現思路 判斷根節點相同 左子樹的右節點和右子樹的左節點相同 右子樹的左節點和左子樹的右節點相同 步驟1 模擬乙個對稱二叉樹和非對稱二叉樹 對稱二叉樹 const symmetricaltree right right right 非對稱二叉樹 const binarytr...