leetcode之二叉树的层序遍历

 2023-09-09 阅读 22 评论 0

摘要:1、题目描述 2、题目分析 二叉树的层序遍历主要算法思想是使用 队列这一数据结构实现,这个数据结构多应用在和 图相关的算法。例如图的广度优先遍历就可以使用队列的方法实现。本题的关键在于如何识别出一层已经打印完毕。解决思路是在每一层结束时加入一个特殊字符

1、题目描述

 

2、题目分析

     二叉树的层序遍历主要算法思想是使用 队列这一数据结构实现,这个数据结构多应用在和 图相关的算法。例如图的广度优先遍历就可以使用队列的方法实现。本题的关键在于如何识别出一层已经打印完毕。解决思路是在每一层结束时加入一个特殊字符如NULL.

根据层序遍历和中序遍历构建二叉树、访问到 NULL 时 就知道一层访问完毕,接下来的元素是下一层的元素。

 

 

3、代码

vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int> > ans;if( root == NULL )return ans ;queue<TreeNode* > q;q.push(root);q.push(NULL);vector<int> level;while( !q.empty() ){TreeNode* p = q.front();q.pop();if(p == NULL){ans.push_back(level);level.resize(0);if(q.size() > 0){q.push(NULL);}}else{level.push_back(p->val);if( p->left != NULL )q.push( p->left );if( p->right != NULL )q.push( p->right ); }}return ans;}

 

转载于:https://www.cnblogs.com/wangxiaoyong/p/8810485.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/21090.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息