1、
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:[3,9,20,15,7]
解题:使用队列可以解决;
2、从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行
例如:给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解题:使用分治方法;
1、
#include <queue>
using namespace std;
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
queue <TreeNode *> my_queue;
if(root!=NULL)
my_queue.push(root);
vector <int> res;
while (my_queue.size()!=0){
TreeNode *temp = my_queue.front();
my_queue.pop();
res.push_back(temp->val);
if(temp->left!=NULL) my_queue.push(temp->left);
if(temp->right!=NULL) my_queue.push(temp->right);
}
return res;
}
};
2、#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int>> res;
vector<vector<int>> levelOrder(TreeNode* root) {
fen(root,0);
return res;
}
void fen(TreeNode *root,int k){
if (root==NULL)
return;
if (k>=res.size()){
vector<int > temp;
res.push_back(temp);
}
res[k].push_back(root->val);
fen(root->left,k+1);
fen(root->right,k+1);
}
};