您的位置:首页 > 其它

【leetcode】Binary Tree Level Order Traversal

2015-01-04 23:16 169 查看
每日一练,
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]
]


代码如下:
class Solution {

public:

int level(TreeNode *node)

{

if (node == NULL) return 0;

if (node->left == NULL && node->right == NULL) return 1;

return max(level(node->left),level(node->right)) + 1;

}

void levelPush(TreeNode *node, int height, vector<int> &vec, int cur_height){

if (height == cur_height) vec.push_back(node->val);

if (node->left != NULL) levelPush(node->left, height, vec, cur_height + 1);

if (node->right != NULL) levelPush(node->right, height, vec, cur_height + 1);

}

vector<vector<int> > levelOrder(TreeNode *root) {

int height = level(root);

vector<vector<int> > vvec;

for(int i = 1;i <= height;i++)

{

vector<int> vec;

levelPush(root, i, vec, 1);

vvec.push_back(vec);

}

return vvec;

}

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