您的位置:首页 > 其它

基于Comparable接口实现二叉树操作

2016-07-11 19:35 316 查看
//基于Comparable接口实现二叉树操作

class BinaryTree{
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.left==null){
this.left = newNode ;
// 直接将新的节点设置成左子树
}else{
this.left.addNode(newNode) ;
// 继续向下判断
}
}
if(newNode.data.compareTo(this.data)>=0){
// 放在右子树
if(this.right==null){
this.right = newNode ;
// 没有右子树则将此节点设置成右子树
}else{
this.right.addNode(newNode) ;
// 继续向下判断
}
}
}
public void printNode(){
// 输出的时候采用中序遍历
if(this.left!=null){
this.left.printNode() ;
// 输出左子树
}
System.out.print(this.data + "\t") ;
if(this.right!=null){
this.right.printNode() ;
}
}
};
private Node root ;
// 根元素
public void add(Comparable data){
// 加入元素
Node newNode = new Node(data) ;
// 定义新的节点
if(root==null){
// 没有根节点
root = newNode ;
// 第一个元素作为根节点
}else{
root.addNode(newNode) ; // 确定是放在左子树还是放在右子树
}
}
public void print(){
this.root.printNode() ;
// 通过根节点输出
}

}

public class Test{
public static void main(String args[]){
BinaryTree bt = new BinaryTree() ;
bt.add(8) ;
bt.add(3) ;
bt.add(3) ;
bt.add(10) ;
bt.add(9) ;
bt.add(1) ;
bt.add(5) ;
bt.add(5) ;
System.out.println("排序之后的结果:") ;
bt.print() ;
}
}

运行结果:

排序之后的结果:

1 3 3
5 5
8 9 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息