Nowcoder java-平衡二叉树
(题目来自牛客网)
思路
如果二叉树的每个节点的左子树和右子树的深度不大于1,它就是平衡二叉树。
从上往下递归
代码
public class IsBalanced_Solution {
public boolean isBalanced_Solution(TreeNode root) {
return getDepth(root) != -1;
}
private int getDepth(TreeNode root) {
if (root == null) {
return 0;
}
int left = getDepth(root.left);
if (left == -1) {
return -1;
}
int right = getDepth(root.right);
if (right == -1) {
return -1;
}
return Math.abs(left - right) > 1 ? -1 : Math.max(left, right);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(10);
TreeNode node1 = new TreeNode(6);
TreeNode node2 = new TreeNode(14);
TreeNode node3 = new TreeNode(4);
TreeNode node4 = new TreeNode(8);
TreeNode node5 = new TreeNode(12);
TreeNode node6 = new TreeNode(16);
root.left = node1;
root.right = node2;
node1.left = node3;
node1.right = node4;
node2.left = node5;
node2.right = node6;
Boolean res = new IsBalanced_Solution().isBalanced_Solution(root);
System.out.println(res);
}
}