LeetCode(110) Balanced Binary Tree解题报告
2015-12-13 12:56
447 查看
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.
解题思路:
求左子树与右子树的深度之差,如果满足,分别递归左子树和右子树。但是这样有大量的重复计算,所以参考网上的一种做法,利用val来存深度,下面附上两次的代码。
改进解法:
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.
解题思路:
求左子树与右子树的深度之差,如果满足,分别递归左子树和右子树。但是这样有大量的重复计算,所以参考网上的一种做法,利用val来存深度,下面附上两次的代码。
public class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; if(Math.abs(Depth(root.left)-Depth(root.right)) > 1) return false; return isBalanced(root.left) && isBalanced(root.right); } public int Depth(TreeNode root){ if(root == null) return 0; return Math.max(Depth(root.left)+1,Depth(root.right)+1); } }
改进解法:
public class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; Depth(root); return balanced(root); } public boolean balanced(TreeNode root){ int l=0,r=0; if(root == null) return true; if(root.left != null) l = root.left.val; if(root.right != null) r = root.right.val; if(Math.abs(l-r) > 1) return false; re 4000 turn balanced(root.left) && balanced(root.right); } public int Depth(TreeNode root){ if(root == null) return 0; root.val = Math.max(Depth(root.left)+1,Depth(root.right)+1); return root.val; }
相关文章推荐
- 如何访问Azure上的SharePoint 网站(How to access the SharePoint site of Azure)
- 让我们来谈谈分工
- Redhat7 搭建本地yum
- 三大图片缓存库对比
- servlet复习(二)HTTP Servlet API
- 补码
- ubuntu播放器flash插件安装
- Company A 面试 笔试 : 按一定的规则打印数组的问题
- bzoj1854[Scoi2010]游戏
- btrfs 使用指南 - 1 概念,创建,块设备管理,性能优化
- myeclipse 快捷键
- 移动端网站优化指南-WAP篇
- 记录iOS的消息推送
- 编C语言单元测试框架CUnit方法库
- 【LWJGL官方教程】游戏逻辑
- 快速学习法
- centos7安装mysql及远程访问设置(yum)
- 2015-12-12复习之OO CSS
- linux下spf13-vim安装
- 使用golang的标准库搭建网站--2.模板解析