【C++】【LeetCode】102. Binary Tree Level Order Traversal

来源:互联网 发布:淘宝动漫周边店 编辑:程序博客网 时间:2024/06/07 06:56

题目

Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
return its level order traversal as:

[
[3],
[9,20],
[15,7]
]

思路

使用递归,依次遍历左右孩子节点,注意,有可能碰到数组中还没有初始化该层子数组的情况,需要先判断数组的大小与层数的关系。

代码

/** * 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>> level;        helper(root, 0, level);        return level;    }    void helper(TreeNode* root, int n, vector<vector<int>>& level) {        if (root == NULL) {            return;        }        if (level.size() > n) {            level[n].push_back(root->val);        } else {            vector<int> tmp;            tmp.push_back(root->val);            level.push_back(tmp);        }        helper(root->left, n+1, level);        helper(root->right, n+1, level);    }};
原创粉丝点击