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}]