看java做的树的三种非递归算法

上一篇 / 下一篇  2008-01-24 16:58:00 / 个人分类:读书笔记

//前序遍历
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);

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-14  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 3312
  • 日志数: 129
  • 建立时间: 2006-12-13
  • 更新时间: 2008-06-26

RSS订阅

Open Toolbar