4.1 檢查二叉樹是否平衡
- 代碼實現
class TreeNode {
public int val = 0;
public TreeNode left = null;
public TreeNode right = null;
}
public class Solution {
public static int getHeight(TreeNode node) {
if (node == null)
return 0;
else
return Math.max(getHeight(node.left), getHeight(node.right))+1;
}
public static boolean isBalance(TreeNode node) {
if (node == null)
return true;
int left = getHeight(node.left);
int right = getHeight(node.right);
if (Math.abs(left - right) > 1)
return false;
else
return isBalance(node.left) && isBalance(node.right);
}
public static boolean isBalance2(TreeNode root) {
if (checkHeight(root) == -1)
return false;
else
return true;
}
public static int checkHeight(TreeNode node) {
if (node == null)
return 0;
int leftHeight = checkHeight(node.left);
if (leftHeight == -1)
return -1;
int rightHeight = checkHeight(node.right);
if (leftHeight == -1)
return -1;
if (Math.abs(leftHeight - rightHeight) > 1)
return -1;
else
return Math.max(checkHeight(node.left), checkHeight(node.right)) + 1;
}
}