插入数据并按顺序输出(就是中序遍历----左中右)
如图
假设通过二叉树对如下10个随机数进行排序
37,9,16,34,29,6,48,46,59
排序的第一个步骤是把数据插入到该二叉树中
插入基本逻辑是,小、相同的放左边,大的放右边中序遍历输出即为从小到大顺序
package nnn;
import java.util.*;
public class node {
public node left;
public node right;
public Object value;//存空,所以用Object
public void add(Object num){
// 如果当前节点没有值,就把数据放在当前节点上
if(value==null)
value=num;
// 如果当前节点有值,就进行判断,新增的值与当前值的大小关系
else{
// 新增的值,比当前值小或者相同
if((Integer)num-((Integer)value)<=0){
if(left==null)
left=new node();
left.add(num);
}
else{
if(right==null)
right=new node();
right.add(num);
}
}
}
public List<Object> values(){
List<Object> values = new ArrayList<>();
if(left!=null)
values.addAll(left.values());//等于把左子树的所有递归得到的值存到容器中
values.add(value);
if(right!=null)
values.addAll(right.values());
return values;
}
public static void main(String[] args) {
int p[]=new int[]{37,9,16,34,29,6,48,46,59};
node S=new node();
for(int number:p){
S.add(number);
}
System.out.println(S.values());//从根开始便利
}
}
输出(为从小到大的终须排序)