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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值