二叉排序树
别名:二叉搜素树,二叉查找树
为什么使用二叉排序树
线性结构的缺点
顺序存储
不排序: 查找困难,只能通过线性查找一个一个找
排序:删除和插入操作困难
链式结构
无论排序还是不排序,查找都十分麻烦
注:二叉排序树(BST) 可以解决上述的问题
定义
对于一个二叉树中的任意一个非叶子节点,要求左子节点比当前节点小,右子节点比当前节点大
注:空树也可看成二叉排序树
数组:{7,3,10,12,5,1,9}构成二叉排序树
中序遍历结果:1,3,5,7,9,10,12
注:二叉排序树的中序遍历可以形成一个排序好的升序数组
二叉排序树的创建及递归
package Tree.BinarySortTree;
public class TreeNode {
int value;
TreeNode leftNode;
TreeNode rightNode;
public TreeNode(int value) {
this.value = value;
}
//增加节点
//如果节点的权大于当前节点则为右节点,小则为左节点
public void add(TreeNode node){
//递归退出条件
if(node==null){
return;
}
if(node.value<this.value){
if(this.leftNode==null){
this.leftNode=node;
}else {
this.leftNode.add(node);
}
}else {
if(this.rightNode==null){
this.rightNode=node;
}else{
this.rightNode.add(node);
}
}
}
//中序遍历
public void