leet-code/src/main/java/leetcode/editor/cn/BalancedBinaryTree.java
2021-06-29 10:40:05 +08:00

89 lines
1.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给定一个二叉树,判断它是否是高度平衡的二叉树。
//
// 本题中,一棵高度平衡二叉树定义为:
//
//
// 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
//
//
//
//
// 示例 1
//
//
//输入root = [3,9,20,null,null,15,7]
//输出true
//
//
// 示例 2
//
//
//输入root = [1,2,2,3,3,null,null,4,4]
//输出false
//
//
// 示例 3
//
//
//输入root = []
//输出true
//
//
//
//
// 提示:
//
//
// 树中的节点数在范围 [0, 5000] 内
// -104 <= Node.val <= 104
//
// Related Topics 树 深度优先搜索 二叉树
// 👍 713 👎 0
package leetcode.editor.cn;
import com.code.leet.entiy.TreeNode;
//110:平衡二叉树
public class BalancedBinaryTree{
public static void main(String[] args) {
//测试代码
Solution solution = new BalancedBinaryTree().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
if (root == null) {
return true;
} else {
return Math.abs(getHeight(root.left) - getHeight(root.right)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
}
}
public int getHeight(TreeNode root) {
if (root == null) {
return 0;
} else {
return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
}
}
}
//leetcode submit region end(Prohibit modification and deletion)
}