給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
1
/ \ 2
2/ \ / \34
43
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
1
/ \ 2
2 \ \
33
對於二叉樹對稱性問題,只要將根節點一邊的所有節點的左右子樹對調,然後根節點左右子樹也就完全相同了,此時只要判斷是否為相同二叉樹即可。
其中對於根節點為空者直接判true
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
if(root !=
null
)exchangenode
(root.left)
;exchangenode
(root.right)
;return root;
}//判斷兩個子樹是否為相同的子樹
bool
issametree
(treenode p, treenode q)
if(p !=
null
&& q ==
null)if
(p ==
null
&& q ==
null)if
(p.val != q.val)
return
issametree
(q.left,p.left)
&&issametree
(q.right,p.right);}
//判斷樹是否為對稱二叉樹
bool
issymmetric
(treenode root)
exchangenode
(root.right)
;bool pop =
issametree
(root.left,root.right)
;return pop;
}}
判斷對稱二叉樹
typedef struct node bn 不用關心輸入,二叉樹構造和刪除過程已經在main函式中實現,需要你們實現函式 int issymmetric bn root 來判斷一棵二叉樹是否對稱,對稱返回1,非對稱返回0.node結構要按照上面的 在symmetric.h中進行定義。注意被測試二叉...
判斷對稱二叉樹
相等條件 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...