leetcode-Binary Tree Level Order Traversal
来源:互联网 发布:网络挂号,厦门中医院 编辑:程序博客网 时间:2024/06/15 17:14
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]]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.二叉树层次遍历,可以用队列解决。
/** * 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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. vector<vector<int> > ret; vector<int> sameLevel; if (root == NULL) return ret; queue<NodeInfo> q; NodeInfo nf(root, 0); q.push(nf); int depth = 0; while (!q.empty()) { nf = q.front(); sameLevel.clear(); while (nf.depth == depth) { // 遍历同一层次的节点 sameLevel.push_back((nf.nodePtr)->val); //把节点值加入vector中 if ((nf.nodePtr)->left != NULL) q.push(NodeInfo((nf.nodePtr)->left, depth+1)); if ((nf.nodePtr)->right != NULL) q.push(NodeInfo((nf.nodePtr)->right, depth+1)); q.pop(); if (q.empty()) break; nf = q.front(); } ret.push_back(sameLevel); //把同一层次的数组加入ret中 ++depth; } //reverse(ret.begin(), ret.end()); return ret; }private: typedef struct NodeInfo { TreeNode *nodePtr; int depth; NodeInfo(TreeNode *ptr, int dep):nodePtr(ptr), depth(dep) { } }NodeInfo;};
- 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
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- mysql使用mysqldump进行数据库备份
- 命令者模式
- java 类型转换的一些例子.
- FatFS文件系统详解-附移植建议
- 错排
- leetcode-Binary Tree Level Order Traversal
- 信息系统项目管理师论文之质量管理
- zoj 2481 Unique Ascending Array
- GDB 调试段错误
- 1501 二叉树最大宽度和高度 (维基oi)
- 动态代理的实现1-简单实现
- 动态代理的实现2-编写可生成代理和插入通告的通用方法
- opencv 播放进度读取
- Objective -C语言基础学习日志(五)