题目:平衡二叉树
来源:互联网 发布:销售数据分析方法视频 编辑:程序博客网 时间:2024/05/22 10:33
给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}
A) 3 B) 3
/ \ \
9 20 20
/ \ / \
15 7 15 7
二叉树A是高度平衡的二叉树,但是B不是
标签 Expand
相关题目 Expand
解题思路:
由2叉树的特性可以知道,若是左字数和右子树的深度相差超过1则不是平衡树
现在主要问题就是求每一个2叉树节点的深度,比较是否绝对值相差超过1
/*** Definition of TreeNode:* public class TreeNode {* public int val;* public TreeNode left, right;* public TreeNode(int val) {* this.val = val;* this.left = this.right = null;* }* }*/public class Solution { /** * @param root: The root of binary tree. * @return: True if this Binary tree is Balanced, or false. */ public boolean isBalanced(TreeNode root) { // write your code here if(root==null) return true; return isBalanceTree(root); } //前序遍历这棵树,到某一个节点时候,判断是否是平衡节点 public boolean isBalanceTree(TreeNode root){ if(root==null) return true; int left = getDepth(root.left); int right = getDepth(root.right); if(Math.abs(left-right)>1) return false; else{ return isBalanced(root.left)&&isBalanced(root.right); } } public int getDepth(TreeNode root){ if(root==null) return 0; int left = getDepth(root.left); int right = getDepth(root.right); return Math.max(left, right)+1; }}
0 0
- 题目:平衡二叉树
- 练习题目-平衡二叉树
- 算法题目---判断平衡二叉树
- 平衡二叉树--c#求解--英雄会在线编程题目
- 面试题39-题目2:平衡二叉树
- 平衡二叉树平衡法则
- 题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树
- 二叉树--二叉平衡树
- 平衡二叉树的
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉查找树
- 平衡二叉树 详解
- 平衡二叉树
- 平衡二叉树
- AVL 平衡二叉树
- 题目:带环链表
- 题目:带重复元素的子集
- 如何使用strace+pstack利器分析程序性能
- 条款48:认识template元编程
- 题目:带重复元素的排列
- 题目:平衡二叉树
- 题目:快速幂
- [noip 2012] 同余方程
- 题目:打劫房屋
- 新人学ruby---ruby中的模块
- LevelDB Log
- ExecutorService、Callable、Future
- hihoCoder 1236
- hiho一下 第六十一周