题目来源:Leetcode Algorithm ProblemSet 102
题目描述:
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,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
解题思路:使用bfs深度优先搜索进行遍历
题解代码:
-
-
-
-
-
-
-
-
-
-
- struct DTreeNode {
- TreeNode *node;
- int dep;
- DTreeNode(int d, TreeNode *r): dep(d), node(r) {}
- };
-
- class Solution {
- public:
- vector<vector<int> > levelOrder(TreeNode* root) {
- vector < vector<int> > ret;
-
- if (root == NULL) return ret;
-
- vector < int > dep0;
- queue < DTreeNode* > q;
- q.push( new DTreeNode(0, root) );
-
-
- while (! q.empty()) {
- DTreeNode * tp = q.front();
- q.pop();
- int dep = tp->dep;
-
- if (dep >= ret.size()) {
- ret.push_back( vector<int>{} );
- }
-
- ret[dep].push_back( tp->node->val );
-
- if (tp->node->left) {
- q.push( new DTreeNode(dep+1, tp->node->left) );
- }
-
- if (tp->node->right) {
- q.push( new DTreeNode(dep+1, tp->node->right) );
- }
- }
-
- return ret;
- }
- };