劍指offer 面試題28 對稱的二叉樹

2021-10-03 06:35:34 字數 1179 閱讀 3710

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。

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

輸入:root = [1,2,2,3,4,4,3]

輸出:true

示例 2:

輸入:root = [1,2,2,null,3,null,3]

輸出:false

t:o(n) s:o(n)

映象二叉樹滿足3個條件:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

bool issymmetric(treenode* root)

};

t:o(n) s:o(n)

兩個指標從根節點出發,乙個指標(根 左 右)的順序進行遍歷,乙個指標(根 右 左)的順序進行便來遍歷。 看每個時刻指標指的是否是相同值得節點。

ps:不能先求出兩個序列, 再比較兩個序列是否相等。 先序遍歷是不能唯一確定一顆二叉樹的

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

if (p2) return false; // 這裡p1是null, 所以檢查p2是否為空, p2不空則返回false

p1 = stk1.top(); stk1.pop();

p1 = p1->right;

p2 = stk2.top(); stk2.pop();

p2 = p2->left;

}return true;

}};

《劍指offer 面試題28 對稱的二叉樹》

劍指offer 面試題28 對稱的二叉樹 註明 僅個人學習筆記 先序遍歷的序列 等於 對稱先序遍歷的序列 當樹中所有節點均相同時,遍歷時,序列中帶入null,便可區分 package com.chapter3.code public class issymmetrical28 private boo...

劍指OFFER 面試題28 對稱的二叉樹

題目 請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 34 43但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 33示例 1 輸入 root 1,2,2,...

劍指offer面試題28 對稱的二叉樹

題目 方案方法1 使用dfs 遞迴遍歷 public boolean issymmetric treenode root return helper root.left,root.right private boolean helper treenode left,treenode right if...