如何设计的 ,其声明如下:
package com。zejian.structures。Tree.AVLTree ;
/**
* Created by zejian on 2016/12/25 。
* Blog : http ://blog 。csdn。net/javazejian [ 原文地址,请尊重原创 ]
* 平衡二叉搜索树 (AVL 树)节点
*/
public class AVLNode<T extends Comparable 〉 {
public AVLNode<T 〉 left ;//左结点
public AVLNode 〈 T> right ;//右结点
public T data ;
public int height;// 当前结点的高度
public AVLNode ( T data) {
this(null,null ,data);
}
public AVLNode ( AVLNode<T> left , AVLNode<T> right, T data ) {
this(left,right ,data,0);
}
public AVLNode ( AVLNode<T> left, A VLNode<T> right , T data, int height) {
this.left=left ;
this.right=right;
this。data=data;
this。height = height;
}
}
可以看出 ,为了满足平衡二叉树的特性,需要在原来的二叉搜索树 (BST) 的结点中添加一个
height 的字段表示高度,方便我们计算 ,这里强调一下,高度和深度一组相反的概念 ,高度是
指当前结点到叶子结点的最长路径,如所有叶子结点的高度都为 0,而深度则是指从根结点
到当前结点的最大路径 ,如根结点的深度为 0。这里约定空结点(空子树 )的高度为 -1,叶子
结点的高度为 0,非叶子节点的高度则根据其子树的高度而计算获取 ,如下图: