請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。
如果根節點為空,則二叉樹是對稱的
否則,進入 helper,最先傳入的引數是根節點的左子樹和右子樹
如果根節點的左子樹和右子樹都為空,說明二叉樹只有根節點乙個節點,則該二叉樹是對稱的
否則如果根節點的左子樹存在右子樹為空,或者右子樹存在左子樹為空,則該二叉樹是不對稱的
剩下最後乙個情況,根節點的左右子樹均存在,在這種情況下,我們要判斷根節點的左子樹和右子樹的值是否相同、根節點的左子樹的左子樹和根節點的右子樹的右子樹是否相同、根節點的左子樹的右子樹和根節點的右子樹的左子樹是否相同,三個條件缺一不可,並且在這步進行遞迴
/*
struct treenode
};*/
class
solution
private
:bool
issymmetricalhelper
(treenode* pleft, treenode *pright)
// 執行到下面這行**,說明 pleft 和 pright 不同時為 null
if(pleft ==
null
|| pright ==
null
)// 執行到下面這行**,說明 pleft 和 pright 都不為 null
return pleft-
>val == pright-
>val
&&issymmetricalhelper
(pleft-
>left, pright-
>right)
&&issymmetricalhelper
(pleft-
>right, pright-
>left);}
};
劍指 Offer JZ39 平衡二叉樹
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹 平衡樹 平衡樹 balance tree,bt 指的是,任意節點的子樹的高度差都小於等於1。二叉排序樹 一棵空樹,或者是具有下列性質的二叉樹 若左子樹不空,則左子樹上所有結點的值均小於它的根結...
58 劍指offer 對稱的二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路 首先根節點以及其左右子樹,左子樹的左子樹和右子樹的右子樹相同 左子樹的右子樹和右子樹的左子樹相同即可,採用遞迴 非遞迴也可,採用棧或佇列訪問各級子樹根節點 boolean issymm...
58 劍指offer 對稱的二叉樹
題目描述 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。解題思路 定義一種遍歷方式,先遍歷父結點,然後遍歷右結點,然後遍歷左結點 如果為對稱二叉樹,則與前序遍歷相同。注意點 對於乙個結點如果其沒有子結點,應該將其子結點位置特殊處理,例如...