介绍:
二叉排序树:BST(Binary Sort(Search) Tree) 对于二叉树的任何一个非叶子节点,要求左子节点比当前节点值小,右子节点值比当前节点值大.
如果有两个相隔相同的值,可以放在左子节点或右子节点
package com.cl.TreeCon.BinarySortTree;
public class BinarySortTreeDemo {
public static void main(String[] args) {
int [] arr ={7,3,10,12,5,1,9};
BinarySortTree binarySortTree = new BinarySortTree();
for (int i = 0; i < arr.length; i++) {
binarySortTree.add(new Node(arr[i]));
}
System.out.println("中序遍历二叉排序树");
binarySortTree.infixOrder();
}
}
//创建二叉排序树
class BinarySortTree{
Node root;
public void add(Node node){
if (root == null){
root=node;
}else{
root.add(node);
}
}
//中序遍历
public void infixOrder(){
if (root!=null){
root.infixOrder();
}else {
System.out.println("二叉排序树为空");
}
}
}
class Node{
int value;
Node left ;
Node rigth;
public Node(int value) {
this.value = value;
}
@Override
public String toString() {
return "Node{" +
"value=" + value +
'}';
}
public void add(Node node){
if (node==null){
return;
}
//判断当前节点值与,当前节点根节点的值比较
if (node.value<this.value){
if (this.left == null){
this.left=node;
}else {
this.left.add(node);
}
}else {//添加的值如果大于当前节点的值
if (this.rigth==null){
this.rigth=node;
}else {
this.rigth.add(node);
}
}
}
//中序遍历
public void infixOrder(){
if (this.left!=null){
this.left.infixOrder();
}
System.out.println(this);
if (this.rigth!=null){
this.rigth.infixOrder();
}
}
}