给定一棵二叉树。找到二叉树的锯齿形级别顺序遍历。你的任务:你不需要读取输入或打印任何东西。您的任务是完成函数 zigZagTraversal(),该函数将二叉树的根节点作为其输入,并返回一个包含节点值的列表,这些节点值出现在树的 Zig-Zag Level-Order Traversal 中。例如:对于下面的二叉树,锯齿形顺序遍历将是 1 3 2 7 6 5 4. 二叉树示例在此处输入图像描述
输入:3 /
2 1 输出:3 1 2
我的代码显示分段错误
enter code here
vector <int> zigZagTraversal(Node* root)
{
// Code here
if(root==0)
{
return {0};
}
stack<Node *> s1;
stack<Node *> s2;
vector<int> m;
m.push_back(root->data);
s1.push(root->left);
s1.push(root->right);
while(s1.empty()==false || s2.empty()==false)
{
if(s1.empty()==false)
{
while(s1.empty()==false)
{Node *f=s1.top();
if(s1.top()->right!=0)
{
s2.push(f->right);
}
if(s1.top()->left!=0)
{
s2.push(f->left);
}
m.push_back(f->data);
s1.pop();
}
}
else if(s2.empty()==false)
{
while(s2.empty()==false)
{
if(s2.top()->left!=0)
{Node *f=s2.top();
s1.push(f->left);
}
if(s2.top()->right!=0)
{Node *f=s2.top();
s1.push(f->right);
}
Node *f=s2.top();
m.push_back(f->data);
s2.pop();
}
}
}
return m;
}