題目描述
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
平衡二叉樹:平衡二叉樹的左右子樹也是平衡二叉樹,那麼所謂平衡就是左右子樹的高度差不超過1.
解題思路
這道題從定義出發,檢查每一個左子樹與右子樹的高度差。所以基於求二叉樹的深度,想到每一次的左右子樹高度進行檢查,並且返回左右子樹較大高度作爲其根節點所在子樹的高度。
public class Solution {
boolean flag = true;
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) {
return flag;
}
func(root);
return flag;
}
private int func(TreeNode root) {
if (root == null) {
return 0;
}
int left = func(root.left) + 1;
int right = func(root.right) + 1;
if (left - right > 1 || right - left > 1) {
flag = false;
}
return (left > right) ? left : right;
}
}