package com.pb.datastructure.find;
/**
* 二叉查找树之插入算法
* @author Administrator
*/
public class BinarySortTree {
private static BinarySortTree tree = new BinarySortTree();
private Node root;//根結點
public void add(int data){
if(null==root){
root=new Node(data,null,null);//如果根结点为空,直接插入根结点
}else{
addTree(root,data);
}
}
/**
* @param args
*/
public static void main(String[] args) {
createTree();//创建二叉查找树
System.out.println("插入节点17");
tree.add(17);
tree.show();
}
/**
* 插入节点
* @param root
* @param data
*/
private void addTree(Node root,int data){
if(root.data>data){
if(root.left==null){
root.left=new Node(data,null,null);//如果根节点左子树为空,则直接插入左子树
}else{
addTree(root.left,data);
}
}else{
if(root.right==null){
root.right=new Node(data,null,null);//如果根节点的右子树为空,则直接插入右子树
}else{
addTree(root.right,data);
}
}
}
/**
* 控制台显示
*/
public void show(){
System.out.println("中序遍历结果为:");
showTree(root);
}
/**
* 显示二叉树
* @author Administrator
*/
public void showTree(Node node){
if(node.left!=null){
showTree(node.left);
}
System.out.println(node.data+" ");
if(node.right!=null){
showTree(node.right);
}
}
/**
* 构建二序查找树
* @author Administrator
*
*/
public static void createTree(){
tree.add(15);
tree.add(12);
tree.add(9);
tree.add(14);
tree.add(13);
tree.add(19);
tree.add(18);
tree.add(22);
tree.add(23);
}
class Node {
int data;// 当前节点关键字
Node left;// 当前节点左节点
Node right;// 当前节点右节点
public Node(int data, Node left, Node right) {
this.data = data;
this.left = left;
this.right = right;
}
}
}
二叉查找树之插入算法
最新推荐文章于 2022-08-02 20:34:38 发布