【Leetcode长征系列】Binary Tree Level Order Traversal
来源:互联网 发布:ts文件合并 mac 编辑:程序博客网 时间:2024/05/16 05:09
原题:
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
思路:利用广度优先搜索和队列数据结构。
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int> > levelOrder(TreeNode *root) { if(!root) return; queue<TreeNode *> tmp; vector<vector<int>> res; vector<int> level; tmp.push(root); while(!tmp.empty()){ TreeNode *p = tmp.front(); tmp.pop(); level.push_back(p); if(){ res.push_back(level); level.clear(); } if(!p->left) tmp.push(p->left); if(!p->right) tmp.push(p->right); } return res; }};
如上图所示,如果我采用广度遍历的方式,我们并不容易找到每一层的分界。
========================================================================================================================
网上参考别人的代码后发现他们也是用的广度遍历!-。-我之所以无法确定边界是因为我把每一层的数据都推到了同一个队列里。而其它人使用了两个队列!【真是被自己蠢死了>///////<】
所以我修改后的代码如下:
class Solution {public: vector<vector<int> > levelOrder(TreeNode *root) { queue<TreeNode *> cur,next; vector<vector<int>> res; vector<int> level; if(!root) return res; cur.push(root); while(!cur.empty()){ TreeNode *p = cur.front(); cur.pop(); level.push_back(p->val); if(!p->left) next.push(p->left); if(!p->right) next.push(p->right); if(cur.empty()){ res.push_back(level); level.clear(); cur = next; while(!next.empty()){ next.pop(); } } } return res; }};
按逻辑笔算了一遍,没有错误吧- 。-
==========================================================================================================================
把if(!p->left) next.push(p->left); if(!p->right) next.push(p->right);改为if(p->left) next.push(p->left); if(p->right) next.push(p->right);
真的是好弱智的错误啊 -皿-#AC了
- 【Leetcode长征系列】Binary Tree Level Order Traversal
- 【Leetcode长征系列】Binary Tree Level Order Traversal II
- 【Leetcode长征系列】Binary Tree Preorder Traversal
- 【Leetcode长征系列】Binary Tree Inorder Traversal
- 【Leetcode长征系列】Binary Tree Postorder Traversal
- [leetcode刷题系列]Binary Tree Level Order Traversal II
- [leetcode刷题系列]Binary Tree Zigzag Level Order Traversal
- [leetcode刷题系列]Binary Tree Level Order Traversal
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- 简单的实现向excel单元格中写入数据
- 软件测试技术---单元测试和集成测试
- Funambol服务器源码编译小结
- [模式识别].(希腊)西奥多里蒂斯<第四版>笔记3之__线性分类器
- Looking for Order 压缩DP
- 【Leetcode长征系列】Binary Tree Level Order Traversal
- python 进阶学习之5--入门练习题
- Objective-C中的@property和@synthesize用法
- 一见钟情只在瞬息之间,而对爱大彻大悟却需要很多年
- Socket使用大全
- seq_file文件的内核读取过程
- PKU1751Prime算法
- JAVA 环境的搭建
- 红糖可以祛斑吗?推荐两款红糖祛斑面膜