**主要思路:**遞迴判斷每一層的節點是否是對稱的,即以根節點為中心,將樹分成左右兩半,判斷左半部分每個位置(該位置就是該節點距離中心處的長度)處的節點是否和右半部分對應位置處的節點相等。因此,左半部分的左節點要與右半部分的右節點比較,反之亦然。
**關鍵點:**遞迴,對稱二叉樹
package jianzhioffer;
/* * 面試題28:對稱的二叉樹
* 題目:請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。
*/public
class
demo28
private
static
boolean
issymmetrical
(treenode proot)
private
static
boolean
issymmetric
(treenode tree1, treenode tree2)
}class
treenode
// 10
// / \
// 6 6
// /\ /\
// 5 7 7 5
/** * 生成對稱二叉樹
* @return
*/public
static treenode generatesymmetricaltree()
private
static
void
connectnode
(treenode root,
treenode left, treenode right)
}
面試題28 對稱二叉樹
題目 請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。方法 遞迴 root1 的左子樹和 root2 的右子樹比較,root1 的右子樹和 root2 的左子樹比較,遞迴下去直到 root1 和 roo...
面試題28 對稱的二叉樹
題目 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路 我們通常有三種不同的二叉樹遍歷演算法,即前序遍歷 中序遍歷和後序遍歷。在這三種遍歷演算法中,都是先遍歷左子結點再遍歷右子結點。以前序遍歷為例,我們可以定義乙個遍歷演算法,先遍歷右...
面試題28 對稱的二叉樹
思路 採用遞迴,先將樹分為兩株,即根節點的左子樹和柚子樹。然後利用函式,依次比較左子樹和柚子樹是否對稱 左子樹的左子樹是否等於柚子樹的柚子樹等條件 definition for a binary tree node.struct treenode class solution return isle...