[求助]小女求助各位朋友
void Inorder (BTreeNode*BT)
{ if(BT!=NULL){
Inorder(BT-->left);//中序遍历左子树
cout<<BT-->dada<<' '//访问根结点
Inorder (BT-->right);//中序遍历右子树
}
}
这是对二岔树进行中序遍历的递归算法,大家能不能帮忙写出非递归算法?
void Inorder (BTreeNode*BT)
{ if(BT!=NULL){
Inorder(BT-->left);//中序遍历左子树
cout<<BT-->dada<<' '//访问根结点
Inorder (BT-->right);//中序遍历右子树
}
}
这是对二岔树进行中序遍历的递归算法,大家能不能帮忙写出非递归算法?
void Inorder(JD *bt)
{
int i=0;
JD *p,*S[M];
p=bt;
do{while(p!=NULL)
{S[i++]=p;
p=p->lchild;}
if(i>=0)
{
p=S[--i];printf("%d\n",p->data);
p=p->rchild;
}
}while(!p)
}
凭记忆写的,不知道对不..........
版主,有正确答案吗?我觉得你是肯定没有问题的!!!
除了我在研究,还有一群菜鸟等着答案呢!
帮帮忙了,再此谢过!(可怜)
有一点不明白哦,既然是中序遍历,
为何树根结点先入栈呢?烦恼解答啊!
树的遍历分先序,中序,后序与安层遍历,每种算法都是有区别的,希望楼上的朋友明白哦!而且在下现在是要将题目做出来,考试过关是最实际的!