原题链接:判断是不是平衡二叉树_牛客题霸_牛客网
描述:
输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
样例解释:
解题思路:
动态规划的题目,每一个根节点只要判断是三个条件,获取左叶子节点层数,获取有叶子节点层数,相减看是否超过1。
代码:
boolean IsBalanced = true;
public boolean IsBalanced_Solution(TreeNode root) {
getNodeLevel(root);
return IsBalanced;
}
private int getNodeLevel(TreeNode node) {
System.out.println("1");
if (node == null) {
return 0;
}
int leftNodeLevel = getNodeLevel(node.left);
int rightNodeLevel = getNodeLevel(node.right);
if (Math.abs(leftNodeLevel - rightNodeLevel) > 1) {
IsBalanced = false;
}
return Math.max(leftNodeLevel + 1, rightNodeLevel + 1);
}