107
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回其层次遍历结果:
[ [3], [9,20], [15,7] ]
104
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回其自底向上的层次遍历为:
[ [15,7], [9,20], [3] ]
通过vector 和queue 将二叉树实现层序遍历的方法
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>item;
if (root == NULL)return item;
queue<TreeNode *>q;
q.push(root);
while (!q.empty())
{
int nums = q.size();
vector<int>pi;
for (int i = 0; i < nums; i++)
{
TreeNode *p = q.front();
q.pop();
if (root->left) { q.push(p->left); };
if (root->right) { q.push(p->right); };
pi.push_back(p->val);
}
item.push_back(pi);
}
for (int it = 0; it != item.size() / 2; it++)
{
vector<int>temp;
temp = item[it];
item[it]=item[item.size() - 1 - it];
item[item.size() - 1 - it] = temp;
}
return item;
}
};
转自https://blog.csdn.net/wbb1997/article/details/81057813