永发信息网

求先序遍历二叉树的非递归算法!!!

答案:2  悬赏:10  手机版
解决时间 2021-08-01 12:19
  • 提问者网友:咪咪
  • 2021-07-31 13:10

struct node

{

char data;

node *lc,*rc;

};

void preorder(node *t)

{

node *s[M],*p=___;

int top=-1;

do

{

while(p!=NULL)

{

____________;

s[++top]=___________;

_________________;

}

if (top!=-1)

{

p=s[top--];

_________;

}

}

while((top!=1)||(p!=NULL));

}

明天上午C程序考试!!最好注释讲解清楚,没注释讲解就直接一起来先序,后序,中序遍历算法,

都要非递归的!!

最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-07-31 14:35
struct node

{

char data;

node *lc,*rc;

};

void preorder(node *t)

{

node *s[M],*p=t;

int top=-1;

do

{

while(p!=NULL)

{

printf("%c\n",p->data); //先序 先根后左后右

s[++top]=p; //保持当前根节点,当无孩子节点时返回

p=p->lc; //先序 先根后左后右

}

if (top!=-1)

{

p=s[top--]; //P已经无孩子节点 所以要返回到保存的父节点

p-p->rc; //刚刚是进入左链表遍历,现在进入右链表

}

}

while((top!=1)||(p!=NULL)); //循环 不断的 根 左 右 直到遍历所有节点

}


全部回答
  • 1楼网友:慢性怪人
  • 2021-07-31 15:36
t;visit(p->data);p;p=p->lc;s[++top]=p->rc
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯