leetcode101 對稱二叉樹

2021-10-01 04:04:02 字數 2717 閱讀 5246

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

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

1

/ \ 2

2/ \ / \34

43

但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:

1

/ \ 2

2 \ \

33

說明:

如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。

借助先序遍歷來實現

說明:這裡需要注意,為了區分[1,2,2,null,3,null,3]這個映象不是對稱的,需要將葉子節點的孩子節點(空節點入棧)

遞迴

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

else

return

false;}

if(i==lv.

size()

&&j==rv.

size()

)return

true

;else

return

false;}

private

:void

rootlr

(treenode* root)

}void

rootrl

(treenode* root)}}

;

非遞迴形式

先序遍歷的非遞迴思想:

借助棧來實現

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

else

return

false;}

if(i==lv.

size()

&&j==rv.

size()

)return

true

;else

return

false;}

private

:void

rootlr

(treenode* root)

v.pop();

if(p-

>right!=

null

)else

v.push

(null);

if(p-

>left!=

null

)else

v.push

(null);

}}void

rootrl

(treenode* root)

v.pop();

if(p-

>left!=

null

)else

v.push

(null);

if(p-

>right!=

null

)else

v.push

(null);

}}};

參考別人思想

leetcode討論

對稱二叉樹應該滿足的條件:

遞迴實現

遞迴的終止條件:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

bool

judge

(treenode* rl,treenode* rr)

};

非遞迴實現

借助佇列,,佇列中相鄰兩項的值要相等,

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

bool

judge

(treenode* rl,treenode* rr)

return

true;}

};

二刷

遞迴

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

private

:bool

judge

(treenode* root1, treenode * root2)

if(root2-

>left && root1-

>right)

return

judge

(root1-

>left, root2-

>right)

&&judge

(root1-

>right, root2-

>left);}

};

LeetCode 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 說明 如果你可以遞迴地和迭代地解決它就獎勵你點數。建立乙個映象的樹,然...

LeetCode(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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。這道題也是劍指offer上的2...

leetcode 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思路 如果同時滿足下面的條件,兩個樹互為映象 它們的兩個根結點具有相同的值。每個樹的右子樹都...