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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-2-2 12:34 编辑

下面这个程序属于组合还是聚合呢 ?或者都不是?
public class Node {
public int value;
public Node left;
public Node right;

public void store(int value)
{
  if(value<this.value)
  {
   if(left == null)
   {
    left = new Node();
    left.value=value;
   }
   else
   {
    left.store(value);
   }
  }
  else if(value>this.value)
  {
   if(right == null)
   {
    right = new Node();
    right.value=value;
   }
   else
   {
    right.store(value);
   }   
  }
}

public boolean find(int value)
{
  System.out.println("happen " + this.value);
  if(value == this.value)
  {
   return true;
  }
  else if(value>this.value)
  {
   if(right == null) return false;
   return right.find(value);
  }else
  {
   if(left == null) return false;
   return left.find(value);
  }
}

public  void preList()
{
  System.out.print(this.value + ",");
  if(left!=null) left.preList();
  if(right!=null) right.preList();
}

public void middleList()
{
  if(left!=null) left.preList();
  System.out.print(this.value + ",");
  if(right!=null) right.preList();  
}
public void afterList()
{
  if(left!=null) left.preList();
  if(right!=null) right.preList();
  System.out.print(this.value + ",");  
}
public static void main(String [] args)
{
  int [] data = new int[20];
  for(int i=0;i<data.length;i++)
  {
   data = (int)(Math.random()*100) + 1;
   System.out.print(data + ",");
  }
  System.out.println();
  
  Node root = new Node();
  root.value = data[0];
  for(int i=1;i<data.length;i++)
  {
   root.store(data);
  }
  
  root.find(data[19]);
  
  root.preList();
  System.out.println();
  root.middleList();
  System.out.println();  
  root.afterList();
}
}

2 个回复

倒序浏览
写的是什么,高深莫测?
回复 使用道具 举报
这个程序其实就是个二叉树,首先运行这个程序,我用我自己测试的结果来打印
  1. 17,43,33,7,2,6,72,68,53,6,3,3,28,89,10,38,25,67,4,63,
  2. happen 17
  3. happen 43
  4. happen 72
  5. happen 68
  6. happen 53
  7. happen 67
  8. happen 63
  9. 17,7,2,6,3,4,10,43,33,28,25,38,72,68,53,67,63,89,
复制代码
然后这个程序以数组[0]=17作为树的根点,之后就是接下来读到的数都像二叉树那样存贮,比如接来下的43就存在根点的右下角,就像一个二叉树那样。以17,43,33,7,2,6,72,68画出个二叉树。
至于你说这个是组合还是聚合 还是别的,我BAIDU了,也没答案,但是按照我理解,应该是组合吧,应该左右节点都依附在上级节点而存在,而且组合,根点结束了,下面的叶节点的生命周期也结束了。也好像符合。假设这幅图是个内存图,17就是root这个对象,而root对象成员属性有left 和right 他们又指向他们各自的左右节点如果root没了,root的左右指向也没了,下面也跟着没有。如果组合还不是,估计我就只能说是一个二叉树结构的关系了

heima11.JPG (15.01 KB, 下载次数: 7)

还有10几个数 我就不画了

还有10几个数 我就不画了

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马