服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

进阶--看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);