package 算法;
public class 二叉树排序 {
// 时间复杂度是 o(logn)-o(n) 之间 空间复杂度是 o(1)
public static void main(String[] args) {
int [] array={1,3,13,6,7,8,9,12,0,9};
Node root= new Node(1);
for(int i=1;i<array.length;i++){
root.buildTree(array[i]);
}
root.forEach();
}
static class Node{
Node left;
Node right;
@Override
public String toString() {
return "Node{" +
"left=" + left +
", right=" + right +
", value=" + value +
'}';
}
int value;
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node(int value){
this.value=value;
}
void buildTree(int nodeValue){
if(this.value>=nodeValue){
if(this.getLeft()==null){
this.setLeft(new Node(nodeValue));
}else{
this.getLeft().buildTree(nodeValue);
}
}else{
if(this.getRight()==null){
this.setRight(new Node(nodeValue));
}else{
this.getRight().buildTree(nodeValue);
}
}
}
public void forEach(){
if(this.getLeft()!=null){
this.getLeft().forEach();
}
System.out.print(this.getValue()+" ");
if(this.getRight()!=null){
this.getRight().forEach();
}
}
}
}
12-14