102- Binary Tree Level Order Traversal
来源:互联网 发布:淘宝千牛是什么 编辑:程序博客网 时间:2024/05/29 11:53
类别:BFS
难度:medium
题目描述
算法分析
(1)广度优先算法,使用队列辅助实现
(2)如果单纯是从左到右,逐层遍历二叉树的话,就很简单:
最初将根节点压入队列中,在队列不为空的情况下,不断的从队头取出元素,并且将队头元素的左右节点压入队列中,知道队列为空,则遍历结束。
(4)这道题目与普通的遍历存在一个不同的地方是:需要按层进行分析,所以使用了一个level作为标记,并且压入队列中的除了节点以外附加了level的信息,这样当从队列中取出元素的时候如果是旧的level,则直接压入数组中,如果是新的level,则将原来那一层先存在result中,然后删除数组,并将新的节点放入数组中,开始新的一层的数组。
(5)需要注意的一点是,在进行vector的erase操作的时候,因为使用的是iterator,从头往后进行删除,每次删除完了以后,后面的数字就往前移动了,所以it不需要++,如果在for中使用it++,则在内部实现中需要使用it–.
代码实现
class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; if (root == NULL) return result; queue<pair<TreeNode*, int> > que; que.push(make_pair(root, 0)); int curlevel = -1; int level = 0; pair<TreeNode*, int> curNode; vector<int> nodes; // BFS ---- using queue while (!que.empty()) { curNode = que.front(); que.pop(); if (curNode.second != curlevel) { curlevel = curNode.second; if (nodes.size() != NULL) { result.push_back(nodes); } // notice no it++ for (auto it = nodes.begin(); it != nodes.end();) { nodes.erase(it); } } nodes.push_back(curNode.first->val); if (curNode.first->left != NULL) { que.push(make_pair(curNode.first->left, curlevel + 1)); } if (curNode.first->right != NULL) { que.push(make_pair(curNode.first->right, curlevel + 1)); } } if (!nodes.empty()) result.push_back(nodes); return result; }};
阅读全文
0 0
- Leetcode 102 Binary Tree Level Order Traversal
- LeetCode(102)Binary Tree Level Order Traversal
- LeetCode 102 Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal [102]
- [leetcode 102]Binary Tree Level Order Traversal
- [LeetCode 102]Binary Tree Level Order Traversal
- leetCode #102 Binary Tree Level Order Traversal
- leetcode-102 Binary Tree Level Order Traversal
- leetcode || 102、Binary Tree Level Order Traversal
- leetcode #102Binary Tree Level Order Traversal
- Leetcode[102]-Binary Tree Level Order Traversal
- LeetCode 102 Binary Tree Level Order Traversal
- LeetCode---(102)Binary Tree Level Order Traversal
- leetcode 102 Binary Tree Level Order Traversal
- leetcode[102]:Binary Tree Level Order Traversal
- Leetcode # 102 Binary Tree Level Order Traversal
- 102Binary Tree Level Order Traversal (java)
- 102Binary Tree Level Order Traversal
- java设计模式学习—原型模式(Prototype)
- 浅析字符编码
- Mac-单机Hive安装与测试
- 指滑轮播图
- 大型分布式网站技术架构笔记(一)
- 102- Binary Tree Level Order Traversal
- flask初探
- Leetcode-Search in Rotated Sorted Array&&Search in Rotated Sorted ArrayII
- Java 中缀表达式转后缀表达式 + 中/后缀表达式计算
- java开发遭遇瓶颈
- mysql:mysql is neither service nor target!?(suse12 sp2 )
- 20171219
- Large Kernel Matters —— Improve Semantic Segmentation by Global Convolutional Network论文阅读
- 条件语句-“平面骰子”-时间模块-随机模块