二叉排序树:第一个元素为根root,大于root的作为右结点,小于的作为左结点;依次类似安排
public class BST {
public static void main(String[] args) {
List<BitNode> nodeList= Stream.of(62,88,58,47,35,73,51,99,37,93).map(BitNode::new).collect(Collectors.toList());
BitNode root=new BitNode(62);
//创建一颗二叉排序树
BST bst=new BST();
for (int i = 1; i < nodeList.size(); i++) {
BitNode leaf=nodeList.get(i);
bst.create(root,leaf);
}
//查找
BitNode keyNode=new BitNode(-1);
keyNode = bst.searchBST(root,51);
System.out.println(keyNode);
}
public void create(BitNode root, BitNode leaf){
if(root.data > leaf.data){
if(root.lchild==null){
root.lchild=leaf;
return;
}
create( root.lchild, leaf);
}else if(root.data< leaf.data){
if(root.rchild==null){
root.rchild=leaf;
return;
}
create( root.rchild, leaf);
}
}
public BitNode searchBST(BitNode sortTree,int key){
if(sortTree==null){
return null;
}else if(sortTree.data > key){
return searchBST(sortTree.lchild,key);
}else if(sortTree.data < key){
return searchBST(sortTree.rchild,key);
}else{
return sortTree;
}
}
}
class BitNode{
public BitNode(int data){
this.data=data;
}
public int data;
public BitNode lchild,rchild;
}