//前序遍历
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);
}
进阶--看java做的树的三种非递归算法
最新推荐文章于 2024-03-26 00:11:30 发布