您的位置:首页 > 其它

Binary Tree Level Order Traversal II

2014-08-17 15:04 288 查看
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:

Given binary tree {3,9,20,#,#,15,7},

3
/ \
9  20
/  \
15   7


return its bottom-up level order traversal as:

[
[15,7],
[9,20],
[3]
]


思路:对输入二叉树进行广度优先遍历。得到root-to-leaf次序的每一层的数据,其逆序即为leaf-to-root的结果。

class Solution {
public:
vector<vector<int>> levelOrderBottom( TreeNode *root ) {
vector<vector<int>> levels;
if( !root ) { return levels; }
vector<TreeNode*> nodes( 1, root );
while( !nodes.empty() ) {
vector<TreeNode*> new_nodes;
vector<int> values;
for( auto iter = nodes.begin(); iter != nodes.end(); ++iter ) {
values.push_back( (*iter)->val );
if( (*iter)->left ) { new_nodes.push_back( (*iter)->left ); }
if( (*iter)->right ) { new_nodes.push_back( (*iter)->right ); }
}
nodes = new_nodes;
levels.push_back( values );
}
vector<vector<int>> results;
for( size_t i = levels.size(); i != 0; --i ) {
results.push_back( levels[i-1] );
}
return results;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: