二叉搜索树:
树的每个节点最多只有两个子节点,任意节点的左子节点小于该节点,右子节点大于该节点
构建一棵如下的二叉搜索树,对其进行搜索
代码
BinaryTree类
public class BinaryTree {
public static class Node{
private int data;
private Node leftKid;
private Node rightKid;
public Node(int data){
this.data = data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getLeftKid() {
return leftKid;
}
public void setLeftKid(Node leftKid) {
this.leftKid = leftKid;
}
public Node getRightKid() {
return rightKid;
}
public void setRightKid(Node rightKid) {
this.rightKid = rightKid;
}
}
/**搜索二叉树*/
public Node search(Node node,int key){
while(node!=null){
if(key<node.data){
node = node.leftKid;
}else if(key>node.data){
node = node.rightKid;
}else{
return node;
}
}
return null;
}
}
Main
public static void main(String[] args) {
/**手动添加一个二叉树*/
BinaryTree.Node node = new BinaryTree.Node(10);
node.setLeftKid(new BinaryTree.Node(8));
node.setRightKid(new BinaryTree.Node(15));
node.getLeftKid().setLeftKid(new BinaryTree.Node(4));
node.getRightKid().setRightKid(new BinaryTree.Node(9));
node.getLeftKid().getLeftKid().setRightKid(new BinaryTree.Node(5));
node.getRightKid().setLeftKid(new BinaryTree.Node(11));
node.getRightKid().setRightKid(new BinaryTree.Node(20));
BinaryTree tree = new BinaryTree();
Scanner in = new Scanner(System.in);
int key = 0;
System.out.println("请输入要查找的值:");
while((key=in.nextInt())!=-1){
BinaryTree.Node resultNode = tree.search(node,key);
if(resultNode!=null){
System.out.println("找到了");
}else{
System.out.println("没找到");
}
}
}