1.二叉排序树的结构
class BSTNode{
private Integer data=null;
private BSTNode lchild=null;
private BSTNode rchild=null;
public BSTNode() {}
public BSTNode(Integer data) {
this.data = data;
}
public Integer getData() {
return data;
}
public void setData(Integer data) {
this.data = data;
}
public BSTNode getLchild() {
return lchild;
}
public void setLchild(BSTNode lchild) {
this.lchild = lchild;
}
public BSTNode getRchild() {
return rchild;
}
public void setRchild(BSTNode rchild) {
this.rchild = rchild;
}
}
2.先了解二叉排序树
3.二叉排序树插入节点
//插入节点
public static void insertBSTNode(BSTNode root,Integer key){
BSTNode insertNode =new BSTNode(key);
while(root !=null){
if(key<root.getData()){
if(root.getLchild() !=null){
root =root.getLchild();
}else{
root.setLchild(insertNode);
return;
}
}else if(key>root.getData()){
if(root.getRchild() !=null){
root =root.getRchild();
}else{
root.setRchild(insertNode);
return;
}
}else{
throw new RuntimeException("插入节点值已经存在");
}
}
}
测试类:
public static void main(String[] args) {
Integer[] arr={100,30,200,20,50,10,25,40,60,55,70,35,45,33,37,34};
List<BSTNode> list =new ArrayList<BSTNode>();
for(int i=0;i<arr.length;i++){
list.add(new BSTNode(arr[i]));
}
BSTNode root =list.get(0);
for(int i=1;i<list.size();i++){
createSortBSTNode(list.get(i),root);
}
//BSTNode bstNode =deleteBSTNode(root,100);
System.out.println("前序遍历:");
queryBSTNodeByPre(root);
System.out.println();
System.out.println("中序遍历:");
queryBSTNodeByOrder(root);
System.out.println();
System.out.println("插入结果");
insertBSTNode(root,23);
queryBSTNodeByOrder(root);
}
结果:
-----------------------------------其中测试类中的一些东西涉及上一篇java实现二叉排序树,如果需要可以查看