题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
int getHeight(Node node){
if(node==null){
return 0;
}
int heigth = 1;
if(node.left!=null){
height = 1+getHeight(node.left);
}
if(node.rigth!=null){
int h = 1+getHeight(node.right);
height = height>h?height:h;
}
return height;
}
boolean isBalance(Node node){
if(node==null){
return true;
}
int left = getHeight(node.left);
int right = getHeight(node.right);
int diff = left - right;
if(diff > 1 || diff < -1)
return false;
return isBalance(node.left)&&isBalance(node.right);
}
我们用后序遍历的方式遍历二叉树的每一个结点,在遍历到一个结点之前我们已经遍历了它的左右子树。只要在遍历每个结点的时候记录它的深度(某一结点的深度等于它到叶节点的路径的长度),我们就可以一边遍历一边判断每个结点是不是平衡的
boolean isBalance(Node node,Depth d){
if(node==null){
d.height=0;
return true;
}
Depth right=new Depth();
depth left = new Depth();
if(isBalance(node.left,left)&&isBalance(node.right,right)){
int diff = left.height-right.height;
if(diff<=1||diff>=-1){//绝对值小于等于1
//如果是平衡树,才有必要算深度,然后看上级是不是平衡树
d.height=left.height>right.height?left.height:right.height;
return true
}
}
return false;
}
分享到:
相关推荐
"程序员面试题精选100题"是一个集合了多种算法和编程问题的资源,旨在帮助程序员们更好地应对面试挑战。下面将详细探讨这些精选题目所涉及的知识点。 1. **基础算法**:面试中常见的基础算法题包括排序(如快速排序...
【程序员面试题精选100题【数据结构 /算法】】是针对求职程序员精心挑选的一系列面试题目,涵盖了数据结构和算法两大核心领域。这些题目旨在帮助应聘者提高面试技巧,提升对技术的理解,以便在激烈的就业市场竞争中...
例如,本文提到的《程序员面试题精选100题》就旨在为即将进入职场的程序员提供一系列经典的技术面试题目,帮助他们系统地复习相关知识和技术要点,从而提升面试表现。 #### 4. 具体案例分析:将二叉查找树转化为...
本题要求将二叉查找树转化为一个排序的双向链表,这一转换不仅考验应聘者对二叉树特性的理解,同时也考察了其对链表操作的熟练程度。 #### 1.2 题目描述 题目要求输入一棵二叉查找树,并将其转换为一个排序的双向...
- **IT公司笔试题算法部分**:这部分包含了更多具体的算法题,如递归实现回文判断、求网格中的黑点分布等问题。 以上是对给定文件中提到的各个知识点的详细解释和分析。这些知识点不仅涵盖了数据结构和算法的基础...
【知识点详解】 1. **二元查找树(Binary Search ... 这类问题通常出现在程序员的面试中,因为它测试了对数据结构的理解、递归思维以及解决问题的能力。理解和掌握这个问题的解法对于提升编程技巧和面试表现至关重要。
在程序员的面试过程中,面试题往往涵盖了许多技术领域,包括数据结构、算法、操作系统、网络、数据库等。这里我们重点讨论的是如何将一个二元查找树(Binary Search Tree, BST)转换成一个排序的双向链表,这是一个...
### 知识点详解 #### 1. 二元查找树的基本概念 - **定义**:二元查找树(Binary Search Tree, BST),又称有序或排序二叉树,是一种特殊的二叉树数据...这种方法不仅可以应用于面试题目,也是实际编程中常用的技术之一。
总结,这个面试题涉及了二元查找树、双向链表和递归等核心计算机科学概念。掌握这些知识点对于准备程序员面试至关重要,尤其是对于那些需要处理复杂数据结构和算法的问题。通过深入理解和实践,可以提高解决问题的...
【知识点详解】 1. 二元查找树(Binary Search Tree, BST): ...通过准备和练习这样的面试题,可以帮助提升解决问题的能力,增加获得理想工作的机会。同时,不断学习和分享面试经验也是提高自身技能的重要途径。