首页 > 代码库 > Binary Tree Level Order Traversal

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]]

思路:对输入二叉树进行广度优先遍历即可。

 1 class Solution { 2 public: 3     vector<vector<int>> levelOrder( 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             levels.push_back( values );16             nodes = new_nodes;17         }18         return levels;19     }20 };