101 對稱二叉樹

2021-09-02 20:18:45 字數 996 閱讀 2791

給定乙個二叉樹,檢查它是否是映象對稱的。

例如,二叉樹 [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...