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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左拉 中级黑马   /  2014-4-19 11:18  /  868 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package org.fsh.comparedemo;

  2. class Node //节点
  3. {
  4. private Comparable data; // 保存操作的数据内容
  5. private Node left; // 左子树
  6. private Node right;// 右子树

  7. public Node(Comparable<?> data)
  8. {
  9.   this.data = data;
  10. }

  11. public void addNode(Node newNode)
  12. {
  13.   if (newNode.data.compareTo(this.data) <= 0)
  14.   { // 放在左子树
  15.    if (this.left == null)
  16.    {// 还没有左子树,可以直接保存在此节点下的左子树
  17.     this.left = newNode;// 保存左子树
  18.    }
  19.    else
  20.    {
  21.     this.left.addNode(newNode);// 向下继续判断
  22.    }
  23.   }
  24.   if (newNode.data.compareTo(this.data) > 0)
  25.   { // 放在右子树
  26.    if (this.right == null)
  27.    {// 还没有右子树,可以直接保存在此节点下的右子树
  28.     this.right = newNode;// 保存右子树
  29.    }
  30.    else
  31.    {
  32.     this.right.addNode(newNode);// 向下继续判断
  33.    }
  34.   }
  35. }

  36. public void printNode()
  37. { // 采用中序遍历
  38.   if (this.left != null)
  39.   {// 存在左子树
  40.    this.left.printNode(); // 继续找到下面的左子树
  41.   }
  42.   System.out.println(this.data); // 找到根内容
  43.   if (this.right != null)
  44.   {// 存在右子树
  45.    this.right.printNode(); // 继续找到下面的右子树
  46.   }
  47. }
  48. }

  49. class BinaryTree //二叉树结构
  50. { // 定义二叉树的操作类
  51. private Node root; // 根节点

  52. public void add(Comparable data)
  53. {// 接收数据
  54.   Node newNode = new Node(data); // 实例化节点类
  55.   if (this.root == null)
  56.   {// 没有根节点
  57.    this.root = newNode; // 第一个节点作为根节点
  58.   }
  59.   else
  60.   {
  61.    this.root.addNode(newNode);
  62.   }
  63. }

  64. public void print()
  65. { // 输出
  66.   this.root.printNode();// 输出全部的节点
  67. }
  68. }

  69. public class CompareableDemo03
  70. {
  71. public static void main(String[] args)
  72. {
  73.   BinaryTree bt = new BinaryTree();
  74.   bt.add(3);
  75.   bt.add(5);
  76.   bt.add(1);
  77.   bt.add(0);
  78.   bt.add(1);
  79.   bt.add(9);
  80.   bt.print();
  81. }
  82. }

复制代码

评分

参与人数 1黑马币 +1 收起 理由
菜小徐 + 1

查看全部评分

2 个回复

倒序浏览
虽然没看懂,还是想问一下,add()方法的数据存哪去了。也没见你定义个容器啊  望解释下。
回复 使用道具 举报
谭荣强 发表于 2014-4-19 20:16
虽然没看懂,还是想问一下,add()方法的数据存哪去了。也没见你定义个容器啊  望解释下。 ...

树就是容器,树专门保存节点,树有根节点,根节点有左右节点,以此类推,数据封装在节点中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马