1.创建二叉树类,包含节点(主要存储数据),注意存储的数据要实现Comparable接口
class BinaryTree {
private Node root;//根节点
private int count;//保存节点个数
private Object[] reData;//遍历输出数组
private int foot;
private class Node{//节点类
@SuppressWarnings("rawtypes")
private Comparable data;
private Node left;//左节点树
private Node right;//右节点树
public Node(Comparable data){
this.data = data;
}
//添加节点的方法
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 toArrayNode() {
if (this.left !=null) {
this.left.toArrayNode();
}
BinaryTree.this.reData[BinaryTree.this.foot++] =this.data;
if (this.right!=null) {
this.right.toArrayNode();
}
}
}
//***************************添加数据
public void add(Object obj){
Comparable data = (Comparable)obj;
Node newnode = new Node(data);
if (this.root == null) {
this.root = newnode;
}else {
this.root.addNode(newnode);
}
this.count++;
}
//返回数据
public Object [] toArray(){
if (this.count>0) {
this.foot=0;
this.reData = new Object[this.count];
this.root.toArrayNode();
return this.reData;
}else {
return null;
}
}
}
2.创建数据
class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age =age;
}
@Override
public int compareTo(Person o) {
// TODO Auto-generated method stub
return this.age-o.age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "姓名:"+this.name+",年龄:"+this.age;
}
}
3.测试
public class TestBinaryTree{
public static void main(String[] args) {
Person p1 = new Person("meimei", 19);
Person p2 = new Person("lisi", 29);
Person p3 = new Person("wangwu", 39);
Person p4 = new Person("zhangliu", 69);
BinaryTree bt = new BinaryTree();
bt.add(p1);
bt.add(p2);
bt.add(p3);
bt.add(p4);
System.out.println(Arrays.toString(bt.toArray()));
}
}
4.结果
[姓名:meimei,年龄:19, 姓名:lisi,年龄:29, 姓名:wangwu,年龄:39, 姓名:zhangliu,年龄:69]