本文首發于我的個人部落格: 尾尾部落
題目描述
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
解題思路
定義:平衡二叉查找樹,簡稱平衡二叉樹。
- 可以是空樹。
- 假如不是空樹,任何一個結點的左子樹與右子樹都是平衡二叉樹,并且高度之差的絕對值不超過1。
周遊每個結點,借助一個擷取樹深度的遞歸函數,根據該結點的左右子樹高度差判斷是否平衡,然後遞歸地對左右子樹進行判斷。
參考代碼
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root == null)
return true;
return Math.abs(maxDept(root.left) - maxDept(root.right)) <=1 &&
IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
public int maxDept(TreeNode root){
if(root == null)
return 0;
return 1 + Math.max(maxDept(root.left), maxDept(root.right));
}
}