C++详解Leetcode:102. Binary Tree Level Order Traversal
2017-07-22 17:44
1221 查看
原题
思想
这一题主要考查二叉树的层次遍历,最常用的方法就是用队列去做,但是需要将二叉树的节点值存到一个二维数组中去,然后返回,这需要在队列存储时候做一些操作,通过NULL来标记二叉树的层次代码和详解
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { //分配一个二维向量 vector<vector<int>> result; //用队列来存储二叉树结点值 queue<TreeNode *> q; //如果根节点为空,则返回 if (!root) { return result; } //将根节点先放入队列中 q.push(root); //再将NULL放入队列中,NULL是为了标记那一层的作用 q.push(NULL); //cur是为了存储每一层的节点值 vector<int> cur; //循环进行二叉树层次遍历,直到队列为空 while (!q.empty()) { //去除队列的第一个值 TreeNode* t = q.front(); //出队列 q.pop(); //如果t==NULL则证明当前层的遍历已经结束,需要将这一层存在cur中的值放到result中 if (t == NULL) { result.push_back(cur); //将cur大小重新置为0 cur.resize(0); //如果队列不为空,证明还没有遍历结束,继续讲NULL入队列作为标记 if (q.size() > 0) { q.push(NULL); } } else { //将当前的节点值存到cur中 cur.push_back(t->val); //如果左孩子不为空,则入队列 if (t->left) { q.push(t->left); } //如果右孩子不为空,则入队列 if (t->right) { q.push(t->right); } } } //返回结果 return result; } };
相关文章推荐
- C++详解Leetcode:103. Binary Tree Zigzag Level Order Traversal
- LeetCode刷题(C++)——Binary Tree Level Order Traversal II(Easy)
- 102. Binary Tree Level Order Traversal - Leetcode
- leetcode 107 Binary Tree Level Order Traversal II C++
- 【LeetCode-107】Binary Tree Level Order Traversal II(C++)
- Leetcode_binary-tree-level-order-traversal (updated c++ and python version)
- LeetCode:102. Binary Tree Level Order Traversal
- LeetCode笔记:102. Binary Tree Level Order Traversal
- leetcode 102 Binary Tree Level Order Traversal C++
- leetcode微软谷歌面试题102. Binary Tree Level Order Traversal
- Leetcode:102. Binary Tree Level Order Traversal(JAVA)
- [C++]LeetCode: 31 Binary Tree Level Order Traversal
- 【LeetCode 102】Binary Tree Level Order Traversal (C++)
- leetcode Binary Tree Zigzag Level Order Traversal C++
- 【leetcode c++】102 Binary Tree Level Order Traversal
- leetcode_c++:树: Binary Tree Level Order Traversal(102)
- leetcode_c++:栈:Binary Tree Zigzag Level Order Traversal(103)
- C++详解Leetcode:105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode刷题(C++)——Binary Tree Zigzag Level Order Traversal(Medium)
- [C++]LeetCode: 101 Binary Tree Zigzag Level Order Traversal