1.代码
package com.xtm.java.test;
import java.util.Arrays;
/**
* Author: TianMing.Xiong
* Date: Created in 18-4-23 上午11:02
*/
public class BinaryTree {
//节点类
private class Node{
//数据
Comparable data ;
public Node(Comparable data) {
this.data = data;
}
//左子
Node left;
//右子
Node right;
public void addNode(Node newNode) {
if(this.data.compareTo(newNode.data)>0){
if(this.left==null){
this.left=newNode;
}else{
this.left.addNode(newNode);
}
}else {
if (this.right==null){
this.right=newNode;
}else {
this.right.addNode(newNode);
}
}
}
//先序:根左右 中序:左根右 后序:左右根
public void toArray() {
if(this.left!=null){
this.left.toArray();
}
BinaryTree.this.retData[BinaryTree.this.foot++]=this.data;//中序
if(this.right!=null){
this.right.toArray();
}
}
}
//树根节点
private Node root ;
private int count;
private int foot;
private Object[] retData;
public void addNode(Object data){
Comparable com = (Comparable) data;
Node newNode = new Node(com);
if(root==null){
this.root=newNode;
}else {
this.root.addNode(newNode);//添加左右节点应该由节点类实现
}
this.count++;
}
public Object[] toArray(){
if(this.root==null){
return null;
}else {
this.foot=0;
this.retData=new Object[this.count];
this.root.toArray();
}
return this.retData;
}
public static void main(String[] args){
BinaryTree binaryTree = new BinaryTree();
binaryTree.addNode(new Person("zhansan",30));
binaryTree.addNode(new Person("lisi",20));
binaryTree.addNode(new Person("wangsu",31));
binaryTree.addNode(new Person("zhaoliu",19));
Object[] objects = binaryTree.toArray();
System.out.println(Arrays.toString(objects));
}
}
class Person implements Comparable<Person>{
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person person) {
if(this.age>person.age){
return 1;
}else if(this.age<person.age) {
return -1;
}
return 0;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
执行结果:
[Person{name='zhaoliu', age=19},
Person{name='lisi', age=20},
Person{name='zhansan', age=30},
Person{name='wangsu', age=31}]