刚看到韩顺平老师的数据结构与算法对于平衡二叉树的讲解(最后会附上地址),有如下理解,希望能帮助大家!哪里需要改正的欢迎指正!
平衡二叉树:一种二叉排序树(BST Binary Sort Tree)的升级,传统的二叉排序树容易形成类似链表的结构,造成平均查询次数较高,所以引入平衡二叉树,使得左右子树的高度差不超过1;
我们知道了平衡二叉树的原理之后,就要在添加结点后就要判断是否需要将此树转化成平衡二叉树!如下例:4,3,5,2,1,0
如图,当添加到1这个结点的时候,4的左子树高为2,4的右子树高为0。 两者高度差为2,此时这棵树不是平衡二叉树,那么就需要将其转换成平衡二叉树(先按照这个例子来进行,下面会说明其他情况):具体操作如下:
先将必要类和方法写出:
class Node{
int value;
Node left;
Node right;
public Node(int value) {
super();
this.value = value;
}
//添加结点
public void add(Node node) {
if(node==null) {
System.out.println("此结点为空,不可添加");
return;
}
if(this.value>node.value) {
if(this.left==null) {
this.left=node;
}else {
this.left.add(node);
}
}else {
if(this.right==null) {
this.right=node;
}else {
this.right.add(<