[LeetCode][二叉树]Balanced Binary Tree
2016-03-26 11:12
411 查看
题目描述:
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
思路:
前提:判断平衡二叉树中左右子树的高度是否相差小于1
过程:树形结构本质上就是由子结构组成的,所以递归是求解树形结构的常用解法。在本题中,递归求解二叉树高度,然后从根节点开始递归判断是否每一棵子树都是平衡二叉树
代码实现:
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
思路:
前提:判断平衡二叉树中左右子树的高度是否相差小于1
过程:树形结构本质上就是由子结构组成的,所以递归是求解树形结构的常用解法。在本题中,递归求解二叉树高度,然后从根节点开始递归判断是否每一棵子树都是平衡二叉树
代码实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public boolean isBalanced(TreeNode root) { if(root == null){ return true; } int depthOfLeft = getDepth(root.left,1); int depthOfRight = getDepth(root.right,1); if(Math.abs(depthOfLeft-depthOfRight) > 1){ return false; }else{ return isBalanced(root.left) && isBalanced(root.right); } } private int getDepth(TreeNode tree, int currentDepth){ if(tree == null){ return currentDepth; } return Math.max(getDepth(tree.left,currentDepth + 1),getDepth(tree.right,currentDepth + 1)); } }
相关文章推荐
- phpMyAdmin 配置文件现在需要一个短语密码的
- 78、ViewGragHelper完全解析之详解实现QQ5.X侧滑酷炫效果(待总结)
- 【面试】shuffle函数的实现
- 1.1 字符类型的整理与总结
- 对于解决新版unity5.x的license error 问题
- 浮点数的内存存储!!!
- 华为oj初级题目——合唱队
- 洛谷 1508 Likecloud-吃、吃、吃
- Android数据库(1)--getReadableDatabase() 和 getWritableDatabase()
- Excel实用操作
- hdu 1698 Just a Hook
- 各种字符串Hash函数
- 根据excel中数据拚SQL
- 文件浏览器及数码相框 -2.3.1freetype_pc
- Oracle使用Scott用户登录
- php中文乱码解决
- Ananagrams id:156
- onBackPressed:Can not perform this action after onSaveInstanceState
- 去除MyEclipse 中新建servlet多余的注释问题
- Android——Xlistview上拉刷新下拉加载