首页 > 代码库 > Binary Tree Level Order Traversal II
Binary Tree Level Order Traversal II
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的结果。
1 class Solution { 2 public: 3 vector<vector<int>> levelOrderBottom( TreeNode *root ) { 4 vector<vector<int>> levels; 5 if( !root ) { return levels; } 6 vector<TreeNode*> nodes( 1, root ); 7 while( !nodes.empty() ) { 8 vector<TreeNode*> new_nodes; 9 vector<int> values;10 for( auto iter = nodes.begin(); iter != nodes.end(); ++iter ) {11 values.push_back( (*iter)->val );12 if( (*iter)->left ) { new_nodes.push_back( (*iter)->left ); }13 if( (*iter)->right ) { new_nodes.push_back( (*iter)->right ); }14 }15 nodes = new_nodes;16 levels.push_back( values );17 }18 vector<vector<int>> results;19 for( size_t i = levels.size(); i != 0; --i ) {20 results.push_back( levels[i-1] );21 }22 return results;23 }24 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。