Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29951010
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: Java

2008-07-01 09:54:52

// 前序遍历


   public void preorder( int root)
  {
   int p = root;
   int s[] = new int [MaxSize]; // 定义栈


   if (p !=- 1 )
  {
   int top = 0 ;
  s[top] = p;
   while (top >= 0 )
  {
  p = s[top -- ];
  System. out .println(treedata[p]);
   if (rchild[p] !=- 1 )
  {
  top ++ ;
  s[top] = rchild[p];
  }
  }
   if (lchild[p] !=- 1 )
  {
  top ++ ;
  s[top] = lchild[p];
  }
  }
  }
   // 中序遍历


   public void inorder( int root)
  {
   int p = root;
   int s[] = new int [MaxSize];
   int top =- 1 ;
   do
  {
   while (p !=- 1 )
  {
  s[ ++ top] = p;
  p = rchild[p];
  }
   if (top >= 0 )
  {
  p = s[top -- ];
  System. out .println(treedata[p]);   p = rchild[p];
  }
  } while (top >= 0 || p !=- 1 )
  }
   // 后序遍历


   public void posorder( int root)
  {
   int p = root;
   int s[] = new int [MaxSize];
   int top =- 1 ;
   int mark = 0 ;
   do
  {
   while (p !=- 1 && mark = 0 )
  {
  s[ ++ top] = p;
  p = rchild[p];
  mark = 0 ;.
  }
   if (top >= 0 )
  {
  p = s[top];
  }
   if (rchild[p] ==- 1 )
  {
  System. out .println(treedata[p]);
  top -- ;
  mark = p;
  }
   else
   if (rchild[p] !=- 1 && rchild[p] = mark)
  {
  System. out .println(treedata[p]);
  top -- ;
  mark = p;
  }
   else
  {
  p = rchild[p];
  mark = 0 ;
  } )
  } while (top >= 0 );
  }

阅读(1440) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~