判断二叉树是否是平衡二叉树
来源:互联网 发布:歼20涂装 知乎 编辑:程序博客网 时间:2024/05/08 11:43
二叉树的节点定义为
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}
二叉树的深度:根节点到叶节点的最长路径长度
平衡二叉树:二叉树中任一节点的左右子树的深度相差不超过1
递归的方法代码如下:
public boolean isBalanced(TreeNode root) { if(root == null){ return true; } int left = getHeight(root.left); int right = getHeight(root.right); if(Math.abs(left - right) <= 1 && isBalanced(root.left) && isBalanced(root.right)) return true; return false; } public int getHeight(TreeNode node){ if(node == null) return 0; int left = getHeight(node.left); int right = getHeight(node.right); return Math.max(left, right)+1; }
上述方法有很多的重复计算,性能不是很好。是否能实现每个节点只遍历一次呢,
可利用后序遍历的方法,在遍历每个节点的时候我们已经遍历了它的左右子树,且记录下其深度
public boolean isBalanced(TreeNode root) { if(root == null){ return true; } int depth = 0; return isBal(root, &depth); } public boolean isBal(TreeNode node, int* depth){ if(node == null){ *depth = 0; return true; } int left; int right; if(isBal(node.left, &left) && isBal(node.right, &right)){ if(Math.abs(left - right) < 2) return true; } return false; }
阅读全文
0 0
- 判断二叉树是否是平衡树
- 判断二叉树是否是平衡树
- 判断二叉树是否是平衡树
- 判断一颗树是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断一棵树是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断二叉数是否是平衡树
- 判断是否是平衡二叉树
- Leetcode110 判断是否是平衡二叉树
- 判断一棵树是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断一棵树是否是平衡二叉树
- 判断一个二叉树是否是平衡二叉树
- 【二叉树8】判断一颗树是否是平衡二叉树
- 判断二叉树是否是平衡二叉树
- 你以为你是谁?
- 一个成熟的人,发觉可以责怪的人越…
- 一个女人,从妻子到"情妇&quo…
- 两小儿辩日の警惕知识
- 多少人不懂这些潜规则!
- 判断二叉树是否是平衡二叉树
- 管理不到核心,就是瞎折腾
- 既然选择无可替代的路,那么在实现…
- 迟了太久,就不必到了
- 一张"断舍离"清单,帮你…
- 最高的情商,就是满怀感恩去工作
- 高月:天下
- 2017 年 Linux 的五大痛点
- 看日剧,学习判断自己的情商高低