leetcode 110 Balanced Binary Tree
2015-10-28 19:43
429 查看
题目要求:判断一个二叉树是否为平衡二叉树(该二叉树的所有节点的左右子树高度差不能超过1)
tags:tree,depth-first search recursive
我的思路:
1.遍历所有的节点,获取其左右子树的高度
2.计算左右子树的高度差,如果有大于1的,则为非平衡二叉树,如果全部满足,则为平衡二叉树。
另一种思路:使用dfs
tags:tree,depth-first search recursive
我的思路:
1.遍历所有的节点,获取其左右子树的高度
2.计算左右子树的高度差,如果有大于1的,则为非平衡二叉树,如果全部满足,则为平衡二叉树。
public boolean isBalanced(TreeNode root) { if(root==null){ return true; } int minus = treeHeight(root.left)-treeHeight(root.right); if(minus>=-1&&minus<=1){ return isBalanced(root.left)&&isBalanced(root.right); }else{ return false; } } public int treeHeight(TreeNode root){ if(root!=null){ return 1+Math.max(treeHeight(root.left),treeHeight(root.right)); }else{ return 0; } }
另一种思路:使用dfs
public boolean isBalanced2(TreeNode root){ return dfsHeight(root)!=-1; } public int dfsHeight(TreeNode root){ if(root==null){ return 0; } int leftHeight = dfsHeight(root.left); if(leftHeight==-1){ return -1; } int rightHeight = dfsHeight(root.right); if(rightHeight==-1){ return -1; } if(Math.abs(leftHeight-rightHeight)>1){ return -1; } return 1+Math.max(leftHeight, rightHeight); }
相关文章推荐
- Winform、WPF、Silverlight、MFC区别与联系
- 【Win10开发】自定义标题栏
- Hibernate一级缓存、二级缓存
- [程序人生]: 判断字符串是否为出栈序列
- listbox
- struts2文件下载相关信息
- 【Python】python-一个class继承的小case
- Android--Fragment的懒加载
- LeetCode---Binary Tree Right Side View
- uva657 The die is cast
- 选择排序
- iOS界面跳转与返回代码实现(Objective-C)
- 街舞风雷
- 二叉树的创建和遍历
- hdu2551 竹青遍野
- cocos2dx三种定时器的使用
- 《大道至简》第五章读后感
- NOI题库1.5.18角谷猜想
- Date语意学 Data Member的存取
- servlet和struts2的区别和联系