Balanced Binary Tree(Java)
来源:互联网 发布:淘宝关键词的大中小词 编辑:程序博客网 时间:2024/06/05 03:19
一、题意再现:
给定一个二叉树(注意,并未指定为二叉排序树,所以不可归并为平衡二叉树问题),判断是否平衡。
平衡:任意节点的左子树和右子树深度(高度)之差的绝对值不超过1。
二、算法1
1.思想:从上而下进行对于每个节点进行遍历,算出每个节点的左子树和右子树高度,这是一层递归。
对于指定位于某个高度的节点来说,算出此节点所在的高度。
注意:递归到哪一个节点,高度从这层开始,1开始增加。
2.代码:
public class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; int leftHeight = getHeight(root.left, 1); int rightHeight= getHeight(root.right, 1); if(Math.abs(leftHeight - rightHeight) > 1){ return false; }else{ return isBalanced(root.left) && isBalanced(root.right); } } public int getHeight(TreeNode tn, int height){ if(tn == null) return height; return Math.max(getHeight(tn.left, height+1), getHeight(tn.right, height+1)); }}
三、算法2
1. 思想:从最底层叶子节点开始遍历,如果该节点满足平衡条件,则将其添加到HashMap表中。
2. 代码:
public class Solution { HashMap<TreeNode, Integer> map = new HashMap<TreeNode, Integer>(); public boolean isBalanced(TreeNode root) { if(root == null){ map.put(null, 0); return true; } if(isBalanced(root.left) && isBalanced(root.right)){ if(Math.abs(map.get(root.left) - map.get(root.right)) > 1){ return false; }else{ map.put(root, Math.max(map.get(root.left),map.get(root.right)) + 1); return true; } }else{ return false; } }}
0 0
- Balanced Binary Tree (Java)
- (java)Balanced Binary Tree
- Balanced Binary Tree(Java)
- [Leetcode] Balanced Binary Tree (Java)
- [LeetCode][Java] Balanced Binary Tree
- [letecode java] Balanced Binary Tree
- LeetCode|Balanced Binary Tree-java
- leetcode:Balanced Binary Tree 【Java】
- balanced-binary-tree Java code
- LeetCode 110:Balanced Binary Tree(Java)
- Leetcode:110. Balanced Binary Tree(JAVA)
- leetcode-java-110. Balanced Binary Tree
- 【leetcode】110. Balanced Binary Tree【java】
- Balanced binary tree 扩展
- LeetCode: Balanced Binary Tree
- [LeetCode]Balanced Binary Tree
- LeetCode Balanced Binary Tree
- [Leetcode] Balanced Binary Tree
- 判断Emacs是否在图形环境中的正确方法
- Service隐示启动
- HDU 1233 还是畅通工程(最小生成树kruskal)
- poj2187 Beauty Contest 凸包 Graham扫描
- JavaScript特效—遮罩层
- Balanced Binary Tree(Java)
- 注册MiniFilter简单的隐藏自身
- tjut 5894
- c语言词法分析器的简单实现
- 对gcc一些优化项目的具体说明
- POJ 2778 DNA Sequence AC自动机+DP+快速幂
- U8+12.5相关服务和端口
- [cogs2525][树状数组]卡片游戏
- 【jzoj3104】【疫情控制】