給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [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說明:
如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。
解題思路:
對稱二叉樹可以理解為,根節點的左右子樹翻轉,再判斷翻轉之後的左右子樹是否相同即可。
#define haslchild(x) (!(x->leftnull))
#define hasrchild(x) (!(x->rightnull))
#define hasonlylc(x) (haslchild(x)&&!hasrchild(x))
#define hasonlyrc(x) (!haslchild(x)&&hasrchild(x))
#define hasdoulechild(x) (haslchild(x)&&hasrchild(x))
#define hasnochild(x) (!haslchild(x)&&!hasrchild(x))
#define same_struct_treenode(x,y) ((hasonlylc(x)&&hasonlylc(y))||(hasonlyrc(x)&&hasonlyrc(y))||(hasdoulechild(x)&&hasdoulechild(y))||(hasnochild(x)&&hasnochild(y)))
class solution
void rotate(treenode* root)
bool issametree(treenodep,treenodeq)
if (hasrchild(t1)) }}
return true;
};
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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。思路 遞迴就用dfs,迭代是b...
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 說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。使用輔助空間佇列 defi...
101 對稱二叉樹
難度 簡單 題目描述 思路總結 沒什麼可說的,遞迴 迭代兩種方法。題解一 遞迴 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right none cla...