”二叉树之的之字形层遍历“的段错误

在解决NC14,"二叉树之的之字形层遍历"这一问题时,使用两个栈代替队列进行存储过程节点,但是自测的时候,可以显示正确的答案,提交后显示“段错误”,通过样例为0,
请问代码如下,恳请大佬帮我看一下。
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    // 在实现上使用两个栈,
    vector<vector<int> > zigzagLevelOrder(TreeNode* root) {
        // write code here
        stack<TreeNode*> left, right;
        vector<vector<int>> result;
        TreeNode *p;
        p = root;
        left.push(root);
        while(!left.empty() || !right.empty())
        {
            vector<int> temp;
            if(!left.empty())
            {
                while(!left.empty())
                {
                    p = left.top(); left.pop();
                    temp.push_back(p->val);
                    if(p->left)
                        right.push(p->left);
                    if(p->right)
                        right.push(p->right);
                }
                result.push_back(temp);
            }
            else
            {
                while(!right.empty())
                {
                    p = right.top(); right.pop();
                    temp.push_back(p->val);
                    if(p->right)
                        left.push(p->right);
                    if(p->left)
                        left.push(p->left);
                }
                result.push_back(temp);
            }
        }
        return result;
    }
};

#C/C++#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务