当前位置: 首页> 教育> 大学 > 网易新闻兰州疫情_网页设计期末作业素材_网站推广计划方法_seo含义

网易新闻兰州疫情_网页设计期末作业素材_网站推广计划方法_seo含义

时间:2025/7/11 18:30:18来源:https://blog.csdn.net/weixin_74300052/article/details/142743730 浏览次数:0次
网易新闻兰州疫情_网页设计期末作业素材_网站推广计划方法_seo含义

文章目录

  • 🍊自我介绍
  • 🍊非递归遍历之前序遍历
  • 🍊非递归遍历之中序遍历
  • 🍊非递归遍历之后序遍历


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


🍊非递归遍历之前序遍历

遍历规则根左右,遇根输出

算法思想
创建一个空栈s,将二叉树的根节点赋值给遍历的指针temp,循环判断当指针temp或s不为空的时候。若当前结点非空,则访问该节点输出值,并将该节点压栈(将该节点的地址压栈),继而遍历其左子树;循环执行,直到当前节点为空时,出栈数据并访问其右子树,再重复如上操作,直至遍历节点的指针为空且栈也为空。

代码展示

//前序遍历
void pre_order(bitree_t *root)
{if(root == NULL)return ;linkstack_t *s = create_empty_linkstack();bitree_t *temp = root;while(temp != NULL || !is_empty_linkstack(s)){while(temp != NULL)        {printf("(%d : %c) ",temp->n,temp->data); //根push_linkstack(s,temp);temp = temp->lchild;}if(!is_empty_linkstack(s)){temp = pop_linkstack(s);        temp = temp->rchild;}}free(s);
}

🍊非递归遍历之中序遍历

遍历规则左根右,遇根输出

算法思想:
建一个空栈s,将二叉树的根结点赋值给遍历的指针temp,循环判断当指针temp或s不为空的时候。若当前节点非空,先把左孩子入栈,不着急先输出,先把所有左孩子入栈。左孩子入栈结束,取栈顶输出栈顶元素,遍历右孩子,右孩子入栈。中序遍历的过程和先序一样,唯一的不同就是中序遍历在出栈时访问节点数据。
代码展示:

//中序遍历
void in_order(bitree_t *root)
{if(root == NULL)return ;linkstack_t *s = create_empty_linkstack();bitree_t *temp = root;while(temp != NULL || !is_empty_linkstack(s)){//遍历左孩子if(temp != NULL)        {push_linkstack(s,temp);        temp = temp->lchild; //左}else{temp = pop_linkstack(s);        printf("(%d : %c) ",temp->n,temp->data); //根temp = temp->rchild; //右}}free(s);return ;
}

🍊非递归遍历之后序遍历

遍历规则左右根,遇根输出

算法思想

  后序,要保证根结点在左孩子和右孩子访问之后才能访问,因此对于任一结点P,先将其入栈。如果 P不存在左孩子和右孩子,则可以直接访问它;或者 P存在左孩子或者右孩子,但是其左孩子和右孩子都已被访问过了,则同样可以直接访问该结点。若非上述两种情况,则将P的右孩子和左孩子依次入栈,这样就保证了每次取栈顶元素的时候,左孩子在右孩子前面被访问,左孩子和右孩子都在根结点前面被访问。

代码演示

//后序遍历
void post_order(bitree_t *root)
{if(root == NULL)return ;linkstack_t *s = create_empty_linkstack();//创建空栈bitree_t *cur = NULL;//当前数据指针bitree_t *pre = NULL;push_linkstack(s,root);while(!is_empty_linkstack(s)){cur = get_top_data(s);        //以下情况,可以直接输出值://1.左右孩子都为空//2.左右孩子存在,并且左孩子或右孩子都被访问过来。if((cur->lchild == NULL && cur->rchild == NULL) || \(pre != NULL && (pre == cur->lchild || pre == cur->rchild))){printf("(%d : %c) ",cur->n,cur->data); //根pop_linkstack(s);pre = cur;}else{if(cur->rchild != NULL)        {push_linkstack(s,cur->rchild);        }if(cur->lchild != NULL)        {push_linkstack(s,cur->lchild);        }}}free(s);return ;
}
关键字:网易新闻兰州疫情_网页设计期末作业素材_网站推广计划方法_seo含义

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: