二叉排序树介绍
二叉树又称二叉树检索树(binarysorttree/binarysearchtree ),简而言之,数据的存储遵循原则。 左侧的节点小于根节点,右侧的节点大于根节点,尽量不要相同(可以放在左右两侧)。
学习双股排序树,实现“修改增删”都是高效的。
实现想法:
1、创建节点Node (定义三个变量、一个添加方法、一个中序遍历方法;前后排序结果不有序) ) ) ) ) ) )。
2、构造二叉树(根节点的定义、添加方法、遍历方法的添加) ) ) ) ) )。
3、创建实例,递归添加数组,使用中序遍历方法输出
测试代码:
公共类二进制语句{
publicstaticvoidmain (字符串[ ] args ) {
//todo自动- generated method stub
intarr [ ]={ 2,5,3,7,4,8,9,1,0 };
binarytreebinarytree=newbinarytree (;
//递归添加数组
for(intI=0; i arr.length; I ) {
binary tree.add (新趋势(arr [ I ] ) );
}
//遍历输出
System.out.println (中序遍历输出~~) );
binaryTree.postOrder (;
}
}
//做二叉树
类二进制树{
私有趋势根;
//publicbinarytree (节点根) {
//this.root=root;
//}
//添加方法
公共语音添加(趋势节点) {
if (根==空) {
根=节点;
} else {
this.root.add (节点;
}
}
//遍历方法
公共语音海报
if (路线!=空) {
this.root.postOrder (;
} else {
System.out.println ('二叉树为空,无法遍历排序) );
}
}
}
//创建节点
类树节点{
私密int value;
私有趋势左;
私有三叉树;
公共趋势(空闲) {
this.value=value;
}
@Override
公共字符串字符串
返回' treenode [ value=' value ' ];
}
//添加方法
公共语音添加(趋势节点) {
//判断传入值与当前节点值的关系
//如果传入的值为空,则直接返回
if (节点==null ) {
返回;
}
//如果传递的值小于当前值
if(node.valuethis.value ) {
//确定当前节点左侧子节点的数量是否为空,如果为空,则将小于当前节点的值放在左侧节点上
if(this.left==null ) {
this.left=node;
//如果当前节点的左子节点不为空,则判断为左子树
} else {
this.left.add (节点;
}
//如果传递的值大于或等于当前值且大于或等于当前值,则将其添加到当前节点的右侧
} else {
if(this.right==null ) {
this.right=node;
} else {
this.right.add(node;
}
}
}
//之后遍历
公共语音海报
if(this.left!=空) {
this.left.postOrder (;
}
system.out.println(this;
if(this.right!=空) {
this.right.postOrder (;
}
}
}