1.问题描述
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
2.示例
二叉树:[3,9,20,null,null,15,7],
返回其层次遍历结果:
3.分析
1、层次遍历——使用先序遍历法,中-左-右
2、要求每一层的节点值分括号呈现,使用 vector<vector<int>>二维嵌套表格。
4.题解
/**
* Definition for a binary tree node.
* 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>> test; //建立二维向量
LO(root,0,test); //调用先序遍历
return test; //返回层次遍历结果
}
//先序遍历
void LO(TreeNode* root,int n,vector<vector<int>> &test)
{
if(!root) return; //若为空,则返回
if(n>=test.size()) //如果当前层大于现有的层数,vector层数加一
test.push_back(vector<int> {});
test[n].push_back(root->val); //放入第n层遍历参数
LO(root->left,n+1,test); //遍历左子树,层数+1
LO(root->right,n+1,test); //遍历右子树,层数+1
}
};