目录
题目
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
我的方法
思路
递归大法好!!!就是在递归时,要传递当前是第几层。
代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
void LevelOrder(TreeNode *node, int iLevel, vector<vector<int> > &vecOrder)
{
if (node == NULL) return;
if (vecOrder.size() < iLevel + 1)
{
vector<int> iVec;
vecOrder.push_back(iVec);
}
vecOrder[iLevel].push_back(node->val);
LevelOrder(node->left, iLevel + 1, vecOrder);
LevelOrder(node->right, iLevel + 1, vecOrder);
}
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
int iLevel = 0;
vector<vector<int> > vecOrder;
if (root == NULL) return vecOrder;
vector<int> iVec;
vecOrder.push_back(iVec);
vecOrder[0].push_back(root->val);
LevelOrder(root->left, 1, vecOrder);
LevelOrder(root->right, 1, vecOrder);
return vecOrder;
}
};