我正在参加LeetCode的编程挑战,要求我遍历每个节点,并在最后返回一个嵌套向量,其中包含每层的节点值。
例如,如果我有如下树:
这是
输入: root = [1,null,3,2,4,null,5,6]
期望输出为
输出: [[1],[3,2,4],[5,6]]
节点的定义如下:
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val) {
val = _val;
}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
我正在尝试一种迭代解决方案,具体如下:
class Solution {
public:
vector<vector<int>> answer;
stack<Node*> nodes;
vector<vector<int>> levelOrder(Node* root) {
if(root == NULL)
return answer;
nodes.push(root);
answer.push_back(vector<int>() = {root->val});
while(!nodes.empty())
{
Node* curr = nodes.top();
nodes.pop();
vector<int>temp;
for(int i = 0; i < curr->children.size(); i++)
{
nodes.push(curr->children[i]);
temp.push_back(curr->children[i]->val);
}
if(temp.size() != 0)
answer.push_back(temp);
}
return answer;
}
};
然而,它在第20个测试用例中始终失败,该输入为:
[1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
期望是:
[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]
我的输出是
[[1],[2,3,4,5],[9,10],[13],[8],[12],[6,7],[11],[14]]
我在纸上无法准确地展现和绘制这个N叉树,因此很难理解我的算法出了什么问题。
[]
分组而不是用,
和null
分隔。但是,你需要计算属于每个级别的运行次数。例如,如果节点4有一个子节点8,输入将看起来像[1,null,3,2,4,null,5,6,null,null,8]
,期望的输出将是[[1],[3,2,4],[5,6,8]]
- 注意在树的第三行中三个运行(一个为空)的连接。 - CiaPan