java实现二叉排序树的插入节点

来源:互联网 发布:linux vi 显示行号 编辑:程序博客网 时间:2024/04/30 00:52

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.先了解二叉排序树

java实现二叉排序树

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实现二叉排序树,如果需要可以查看




原创粉丝点击