LeetCode - BalancedBinaryTree
来源:互联网 发布:流动商贩全国数据 编辑:程序博客网 时间:2024/05/29 18:52
/**
* 问题:判断一棵树是否是平衡二叉树。
* 解:平衡二叉树要求所有左右子树的高度相差不会超过1,所以算法的核心是递归。
*/public class BalancedBinaryTree {
// 内部节点类
public class TreeNode {
int val; // 节点的关键字
TreeNode left; // 左孩子
TreeNode right; // 右孩子
// 构造函数
TreeNode(int val) {
this.val = val;
}
}public boolean isBalance(TreeNode root) {
// 空判断
if (root == null)
return true;
// 先看根节点的左右子树是否平衡
int leftHeight = getTreeHeight(root.left);
int rightHeight = getTreeHeight(root.right);
if (Math.abs(leftHeight - rightHeight) > 1)
return false;
// 递归判断左子树是否平衡
if (root.left != null) {
if (isBalance(root.left) == false)
return false;
}
// 递归判断右子树是否平衡
if (root.right != null) {
if (isBalance(root.right) == false)
return false;
}
return true;
}public int getTreeHeight(TreeNode node){
// 空判断
if (node == null)
return 0;
// 到达叶子节点时递归结束
if (node.left == null && node.right == null)
return 1;
// 递归计算左右子树的高度
int leftHeight = getTreeHeight(node.left);
int rightHeight = getTreeHeight(node.right);
// 比较的是子树的高度,而返回的是当前节点的高度,易漏 +1。
return (leftHeight >= rightHeight) ? leftHeight+1 : rightHeight+1;
}}
- leetcode--BalancedBinaryTree
- LeetCode - BalancedBinaryTree
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- 常用设计模式大全-详细介绍
- Linux ACL
- 常见SQL异常及解决方法
- LeetCode - BestTimetoBuyandSellStockII
- 并行分布式计算的同步问题
- LeetCode - BalancedBinaryTree
- 哈哈
- LeetCode - Anagrams
- js获取客户端信息
- 即时通讯demo
- 二叉树问题之summary^_^(1)
- android studio for android learning (六)在布局中常使用的单位
- HDU 5686 高精度加法
- php获取用户和服务器ip及其地理位置详解