您的位置:首页 > 娱乐 > 明星 > 【数据结构】二叉树的层序遍历~动画超详解

【数据结构】二叉树的层序遍历~动画超详解

2024/10/6 20:35:37 来源:https://blog.csdn.net/2302_79981653/article/details/139331282  浏览:    关键词:【数据结构】二叉树的层序遍历~动画超详解

目录

    • 1 什么是层序遍历
    • 2 二叉树层序遍历的基本思路
    • 3 二叉树层序遍历的实现

1 什么是层序遍历

  • 我们从字面意思就明白,所谓层序,就是一层一层按顺序去遍历一个二叉树,这和我们之前了解的按前中后序遍历方式完全不同

比方说这颗二叉树:
在这里插入图片描述

前序遍历:

请添加图片描述

层序遍历:
请添加图片描述

2 二叉树层序遍历的基本思路

  • 我们引入一个队列,入这棵树的根进队列,只要这个树的非叶子节点出队列了,立马让这个节点的子节点如队列,如此循环,我们直接看动画

请添加图片描述

3 二叉树层序遍历的实现

//层序遍历
void TreeLevelOrder(BTNode* proot)
{QU qu;   // 创建队列QInit(&qu);   // 队列初始化if (proot == NULL)  // 判空{return;}else{QPush(&qu, proot);  // 二叉树不是空就先把第一个值入队}while (!QEmpty(&qu))  //  只要队列不是空就一直循环,直到队列为空{QDataType tmp = QFront(&qu);  //  取队头QPop(&qu);   //  队头元素出队if (tmp->leftnode != NULL)  //  取队头的子节点入队(除非子节点为空){QPush(&qu, tmp->leftnode);}if (tmp->rightnode != NULL){QPush(&qu, tmp->rightnode);}printf("%d ", tmp->val);  //  打印出队的节点的值(视情况加或不加)}QDestroy(&qu);  //  别忘了销毁堆列
}

佬!都看到这了,如果觉得有帮助的话一定要点赞啊佬 >v< !!!
放个卡密在这,感谢各位能看到这儿啦!
请添加图片描述

版权声明:

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

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