給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [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
bool issymmetric2
(struct treenode* q,
struct treenode* p)
if(p ==
null
&& q !=
null
)return0;
if(p !=
null
&& q ==
null
)return0;
int flag1 = q->val == p->val;
// if(flag1==0) return 0; //可以加乙個判定條件,如果值不相等
//直接返回0
int flag2 =
issymmetric2
(q->left, p->right)
&&issymmetric2
(q->right, p->left)
;//判斷接下來的
return
(flag1 && flag2)
;//如果任意乙個flag為0,則不是映象二叉樹!(
}bool issymmetric
(struct treenode* root)
由於是遞迴,空間佔用率比較高。
在解題時,考慮到,如果只傳遞乙個節點的位址。只能判斷該節點的,子節點。而映象二叉樹與該節點的子節點無關。映象二叉樹,即乙個節點向左,那麼另乙個節點就要相右。本演算法,採取了由頂向下的思路。
傳遞兩個位址,進行映象遞迴。在思考,邊界條件即可。其中任意一步不符合映象二叉樹,則不是映象二叉樹。
力扣 101 對稱二叉樹
一 題目描述 給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 判斷左子樹a和右...
力扣101 對稱二叉樹
判斷二叉樹是否對稱 給定一棵二叉樹,判斷琪是否是自身的映象 即 是否對稱 例如 下面這棵二叉樹是對稱的 2 2 3 4 4 3 下面這棵二叉樹不對稱。2 2 3 3 備註 希望你可以用遞迴和迭代兩種方法解決這個問題 示例1輸入 輸出true 示例2輸入 輸出false 對稱二叉樹 模式識別 深度搜尋...
力扣 101 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 高階 你可以運用遞迴和迭代兩種方法解決這個問題嗎?我是遞迴 如果當前樹是對稱的,那麼其左...