1. Code
package com.xtm.java.test; import java.util.Arrays; /** * Author: TianMing.Xiong * Date: Created in 18-4-23 上午11:02 */ public class BinaryTree { //node class private class Node{ //data Comparable data ; public Node(Comparable data) { this.data = data; } // left child Node left; // right child 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); } } } //Preorder: root left and right middle order: left root right postorder: left and right roots 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(); } } } //tree root node 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);//Adding left and right nodes should be implemented by the node class } 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 + '}'; } }
Results of the:
[Person{name='zhaoliu', age=19}, Person{name='lisi', age=20}, Person{name='zhansan', age=30}, Person{name='wangsu', age=31}]