/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
void dfs(TreeNode *root, int k, vector<vector<int>> &ans) {
if (root == NULL) return ; // 深度优先遍历当 当前节点为空时表示遍历完成所以要往回返
if (k == ans.size()) ans.push_back(vector<int>());//当前层等于二维数组的层数时说明此时的root节点为下一层的节点 不在上几层节点之内所以要给二维数组往下阔一层
ans[k].push_back(root->val); // 将当前节点放在第k层
dfs(root->left, k + 1, ans); // 遍历左子树 k + 1 是因为该下一层了
dfs(root->right, k + 1, ans);// 遍历右子树 k + 1 与上一个同理
return ;
}
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> ans; //二维数组装二叉树每层的值用的
dfs(root, 0, ans);// 三个参数分别为树根 当前层 二维数组
return ans;
}
};
力扣102题二叉树的层序遍历装入二维数组中
最新推荐文章于 2024-11-13 11:37:20 发布