树的特征:左孩子<父节点<右孩子。
先构造树,然后中序遍历。
算法实现:
public class BinaryTreeSort {
private Node root;
public class Node{
private int value;
private Node left;
private Node right;
Node(int value){
this.value=value;
}
public void addNode(Node node){
if(node.value<this.value){
if(this.left!=null){
this.left.addNode(node);
}
else
{
this.left=node;
}
}
else
{
if(this.right!=null){
this.right.addNode(node);
}
else
{
this.right=node;
}
}
}
public void outPut(){
if(this.left!=null){
this.left.outPut();
}
System.out.println(this.value);
if(this.right!=null){
this.right.outPut();
}
}
}
public void add(int value){
Node node=new Node(value);
if(this.root!=null)
{
this.root.addNode(node);
}
else
{
this.root=node;
}
}
public void out(){
root.outPut();
}
public static void main(String[]args){
int[]arr={36,4,6,7,4,2,4564,45,31,3,654,46};
BinaryTreeSort sorter=new BinaryTreeSort();
for(int i=0;i<arr.length;i++){
sorter.add(arr[i]);
}
sorter.out();
}
}