二叉树排序

mac2024-04-22  14

插入数据并按顺序输出(就是中序遍历----左中右) 如图 假设通过二叉树对如下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());//从根开始便利 } }

输出(为从小到大的终须排序)

最新回复(0)