《劍指 Offer》 39 平衡二叉樹

2021-10-16 13:02:53 字數 1008 閱讀 3119

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹。

平衡二叉樹(balanced binary tree),具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過 1,並且左右兩個子樹都是一棵平衡二叉樹。

例如:

輸入:

返回值:

true

利用後序遍歷:左子樹、右子樹、根節點,可以先遞迴到葉子節點,然後在回溯的過程中來判斷是否滿足條件。

public

class

treenode

}

public

class

solution

int depth =

getdepth

(root);if

(depth ==-1

)return

true;}

/** * 返回當前節點的深度

* @param root

* @return

*/public

intgetdepth

(treenode root)

int left =

getdepth

(root.left)

;// 遍歷過程中發現子樹不平衡

if(left ==-1

)int right =

getdepth

(root.right)

;// 遍歷過程中發現子樹不平衡

if(right ==-1

)// 左右兩個子樹的高度差的絕對值超過 1,則不平衡

if(math.

abs(left - right)

>1)

// 返回當前節點的深度

return left > right ? left +

1: right +1;

}}

劍指offer 39 平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。首先,什麼是平衡二叉樹?如果二叉樹中任意結點的左右子樹深度相差不超過1,那麼它就是平衡二叉樹。最直接的做法,遍歷每個結點,借助乙個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷。public class sol...

劍指offer39 平衡二叉樹

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。首先要搞清楚什麼是平衡二叉樹 它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。很直觀用遞迴來解決 coding utf 8 class treenode def init self,x self.va...

劍指offer 39 平衡二叉樹

1.題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。2.解題思路 預備知識 平衡二叉樹是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。思想 從根節點開始,先判斷左右子樹的高度差是否超過1,然後接著判斷左右子樹是否是平衡二叉樹。這邊用到了遞迴思想。如...