二叉排序树(Binary Sort Tree)或者是一颗空树;或者是具有如下性质的二叉树:
(1) 若它的左子树不空,则 左子树 上所有结点的值 均小于 它的根结点的值;
(2) 若它的右子树不空,则 右子树 上所有结点的值 均大于 它的根结点的值;
(3) 它的 左、右子树又分别为二叉排序树 。
按给定数组构建一颗二叉排序树 这里arr={7,3,10,12,5,1,9};最后中序遍历返回
package DataStructure.tree;
//中序遍历二叉排序树
//二叉排序树用这个数组给定的数构建
//中序遍历有序
public class BinaryTreeTest{
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]));
}
binarySortTree.infixOrder();
}
}
class BinarySortTree{
private 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;
public Node left;
public Node right;
public Node(int value) {
this.value = value;
}
@Override
public String toString() {
return "Node{" +
"value=" + value +
", left=" + left +
", right=" + right +
'}';
}
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.right==null){
this.right=node;
}else{
this.right.add(node);
}
}
}
//中序遍历
public void infixorder(){
if(this.left!=null){
this.left.infixorder();
}
System.out.println(this);
if(this.right!=null){
this.right.infixorder();
}
}
}
有序返回