A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心?=忐§忑] 中级黑马   /  2014-4-8 10:58  /  819 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Tree{  //定义二叉树类
  2.         class Node{   //节点类
  3.         private Comparable date ;  //保存操作的数据内容
  4.         private Node left ;   //左子数
  5.         private Node right ;  //右子树
  6.         
  7.         public Node(Comparable date){  //构造方法
  8.             this.date = date ;       
  9.         }
  10.         
  11.         public void addNode(Node newnode){   //二叉树中放入数据
  12.                 if(newnode.date.compareTo(this.date)<0){   //判断左子树
  13.                         if(this.left == null){  //左子树为空
  14.                                 this.left = newnode ;  //存入左子树
  15.                         }else{
  16.                                 this.left.addNode(newnode) ;  //继续向下判断
  17.                         }
  18.                 }
  19.                 if(newnode.date.compareTo(this.date)>0){   //判断右子树
  20.                         if(this.right == null){  //右子树位空
  21.                                 this.right = newnode ;   //放入右子树
  22.                         }else{
  23.                                 this.right.addNode(newnode) ;   //继续向下判断
  24.                         }
  25.                 }
  26.         }
  27.         public void printNode(){   //采用中序遍历
  28.                 if(this.left != null){   //判断有没有左子树
  29.                         this.left.printNode() ;   //继续向下找左子树
  30.                 }
  31.                 System.out.print(this.date + " ") ;  //找到根节点(当前节点,当作根节点输出)
  32.                 if(this.right != null){   //判断有没有右子树
  33.                         this.right.printNode() ;   //继续向下找右子树
  34.                 }
  35.         }
  36.         
  37.         }
  38.         private Node rode ; //定义根节点
  39.        
  40.          public void add(Comparable date){  //接受数据
  41.              Node newnode = new Node(date) ;  //实例化节点
  42.              if(this.rode == null){   //没有根节点
  43.                      this.rode = newnode ;   //第一个节点作为根节点
  44.              }else{
  45.                      this.rode.addNode(newnode) ;   //存入子节点(调用)
  46.              }
  47.      }
  48.      
  49.      public void print(){   //输出
  50.              this.rode.printNode() ;  //输出全部数据(调用)
  51.      }
  52. }
  53. public class ComparableDemo {
  54.     public static void main(String args[]){
  55.             Tree t = new Tree() ;  //实例化二叉树类
  56.             t.add(5) ;  //添加数据
  57.             t.add(1) ;  //添加数据
  58.             t.add(4) ;  //添加数据
  59.             t.add(2) ;  //添加数据
  60.             t.add(3) ;  //添加数据
  61.             t.print() ;   //输出数据
  62.     }
  63. }
复制代码

代码中用到的是二叉树的中序遍历!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

2 个回复

倒序浏览
我感觉高级语言都差不多,算法是核心!
回复 使用道具 举报
嗯,就是的,算法和数据结构特别重要!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马