您的位置:首页 > 其它

[LeetCode 102] Binary Tree Level Order Traversal

2016-07-29 00:00 555 查看
https://leetcode.com/problems/binary-tree-level-order-traversal/

http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal/#

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.

/**
* Definition of TreeNode:
* class TreeNode {
* public:
*     int val;
*     TreeNode *left, *right;
*     TreeNode(int val) {
*         this->val = val;
*         this->left = this->right = NULL;
*     }
* }
*/

class Solution {
/**
* @param root: The root of binary tree.
* @return: Level order a list of lists of integer
*/
public:
vector<vector<int>> levelOrder(TreeNode *root) {
// write your code here
vector<vector<int> > ret;
queue<TreeNode *> q;

if (root == NULL) {
return ret;
}

q.push(root);
q.push(NULL);

while (!q.empty() && q.front() != NULL) {
vector<int> subRet;

while (true) {
TreeNode *node = q.front();

if (node == NULL) {
q.pop();
q.push(NULL);
break;
}

if (node->left) {
q.push(node->left);
}

if (node->right) {
q.push(node->right);
}

subRet.push_back(node->val);

q.pop();
}

ret.push_back(subRet);
}

return ret;
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: