[劍指offer] 平衡二叉樹
阿新 • • 發佈:2019-02-09
本文首發於我的個人部落格:尾尾部落
題目描述
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
解題思路
定義:平衡二叉查詢樹,簡稱平衡二叉樹。
- 可以是空樹。
- 假如不是空樹,任何一個結點的左子樹與右子樹都是平衡二叉樹,並且高度之差的絕對值不超過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));
}
}