二叉树排序分左序、中序、右序;
左序:中间的数遍历后放在左边;
中序:中间的数遍历后放在中间;
右序:中间的数遍历后放在右边;
以下是中序代码,可直接赋值出来运行。
package com.example.demo.utils;
import java.util.ArrayList;
import java.util.List;
public class Node {
// 左子节点
public Node leftNode;
// 右子节点
public Node rightNode;
// 当前值
public Object value;
/**
* @Title:
* @author mao
* @Description: 添加方法
* @param
* @return
*/
public void add(int num){
if(null==value || "".equals(value)){
value = num;
}else {
if((num-Integer.parseInt(String.valueOf(value))) <= 0){
if(null==leftNode){
leftNode = new Node();
}
leftNode.add(num);
}else {
if (null==rightNode){
rightNode = new Node();
}
rightNode.add(num);
}
}
}
/**
* @Title:
* @author mao
* @Description: 中序排序
* @param
* @return
*/
public List<Object> sorts(){
List<Object> values= new ArrayList<>();
//左节点
if(null != leftNode){
values.addAll(leftNode.sorts());
}
values.add(value);
//右节点
if(null!=rightNode){
values.addAll(rightNode.sorts());
}
return values;
}
public static void main(String[] args) {
int array[] = new int[]{61, 17, 10, 93, 10, 11, 58, 81, 91, 87,90};
Node node = new Node();
//循环数组的值放入到二叉树中
for (int num:array){
node.add(num);
}
//排序
System.out.println(node.sorts());
}
}
当然,这里用的排序是最常用的中序,可根据排序方法修改sorts方法中的add数据的顺序。