leetcode-Binary Tree Level Order Traversal
2013-11-28 20:25
369 查看
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
return its level order traversal as:
confused what
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:
The above binary tree is serialized as
二叉树层次遍历,可以用队列解决。
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 \ 5
The 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之Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- 【LeetCode-107】Binary Tree Level Order Traversal II(C++)
- LeetCode Binary Tree Level Order Traversal
- **(leetcode) Binary Tree Zigzag Level Order Traversal (tree)
- LeetCode - Binary Tree Level Order Traversal II
- Leetcode 102 Binary Tree Level Order Traversal 二叉树+BFS
- LeetCode--Binary Tree Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- [leetcode]Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal
- 【LeetCode】Binary Tree Level Order Traversal 解题报告
- LeetCode--Binary Tree Level Order Traversal
- LeetCode_107 Binary Tree Level Order Traversal II
- LeetCode 之 Binary Tree Level Order Traversal II
- LeetCode | Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal
- [Leetcode]Binary Tree Level Order Traversal
- 70_leetcode_Binary Tree Zigzag level order traversal
- LeetCode----Binary Tree Level Order Traversal