首页 > 代码库 > 查找算法(二叉排序树)
查找算法(二叉排序树)
package com.tree.find;public class TestSearchBST { private static class BiNode{ int data; BiNode lchild; BiNode rchild; } public static boolean hasBuild = false; public static void createBiTree(BiNode head, int array[]){ head.data = array[0]; BiNode next; for(int i=1;i<array.length;i++){ hasBuild = false; next = new BiNode(); next.data = array[i]; build(head,next); } } public static void build(BiNode t, BiNode next){ if(t != null){ if(t.data < next.data){ build(t.rchild, next); if(!hasBuild){ // 设置一个标量,如果结点已经构建进树,之后就直接弹出,避免已经构建好的结点出现重复覆盖的现象 t.rchild = next; hasBuild = true; } }else{ build(t.lchild,next); if(!hasBuild){ t.lchild = next; hasBuild = true; } } } } public static void forEach(BiNode t){ if(t != null){ //中序遍历,可以从小到大排好序 forEach(t.lchild); System.out.println(t.data); forEach(t.rchild); } } //查找 static boolean isFind = false; static BiNode findedNode = null; public static void searchBSF(BiNode t, int key){ if(t == null){ return; }else if(key == t.data){ findedNode = t; // 把找到的结点赋值给findedNode isFind = true; }else if(key < t.data){ searchBSF(t.lchild,key); }else{ searchBSF(t.rchild,key); } } //插入 public static void insertBSF(BiNode t,int key){ searchBSF(t,key); if(!isFind){//如果树中不存在这个数据,就插入 BiNode n = new BiNode(); n.data = key; hasBuild = false; // 刚开始是没有构建入树的 build(t,n); } } public static void alert(BiNode t, int oldVal, int newVal){ searchBSF(t,oldVal); if(isFind){ findedNode.data = newVal; } } public static void main(String[] args) { BiNode t = new BiNode(); int arr[] = new int[]{23,63,76,45,12,78,89,44}; createBiTree(t,arr); //查找数据是否存在// searchBSF(t,23);// System.out.println(isFind); //插入新数据// forEach(t);// insertBSF(t,50);// forEach(t); // forEach(t);// delete(t, 12);// System.out.println();// forEach(t); //searchBSF(t,23); //System.out.println(findedNode.data); //System.out.println(isFind); //修改操作// forEach(t);// alert(t, 23, 111);// forEach(t); }}
查找算法(二叉排序树)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。