简单的实现二叉树的添加保存和取值功能。
利用Comapareble接口实现二叉树的对象数据比较,利用中序遍历的方法取得对象数组值并返回。
package test;
class BinnaryTree{
private class Node{
private Comparable data;
private Node left;
private Node right;
public Node(Comparable data){
this.data = data;
}
public void addNode(Node newNode) {
if(newNode.data.compareTo(this.data)>=0){
if(this.right==null){
this.right = newNode;
}else{
this.right.addNode(newNode);
}
}else{
if(this.left == null){
this.left = newNode;
}else{
this.left.addNode(newNode);
}
}
}
public void toArrayNode() {
if(this.left!=null){
this.left.toArrayNode();
}
BinnaryTree.this.retArray[BinnaryTree.this.foot++] = this.data;
if(this.right != null){
this.right.toArrayNode();
}
}
}
private Node root = null;
private int count = 0;
private int foot = 0;
private Object retArray[];
public void add(Object data){
if(data==null){
return ;
}
Node newNode = new Node((Comparable)(data));
if(this.root == null){
this.root = newNode;
}else{
this.root.addNode(newNode);
}
this.count++;
}
public boolean isEmpty(){
return this.count==0 && this.root==null;
}
public int size(){
return this.count;
}
public Object[] toArray(){
if(this.isEmpty()){
return null;
}
retArray = new Object[this.count];
this.foot = 0;
this.root.toArrayNode();
return this.retArray;
}
}
public class Test {
public static void main(String[] args) {
BinnaryTree bt = new BinnaryTree();
bt.add("C");
bt.add("B");
bt.add("W");
bt.add("E");
bt.add("G");
bt.add("H");
bt.add("A");
bt.add("N");
System.out.println("二叉树是否为空:"+bt.isEmpty()+",总共有"+bt.size()+"个数据");
Object[] obj = bt.toArray();
for (int i=0; i<obj.length ; i++){
String str = (String)obj[i];
System.out.println(str);
}
}
}