C++ (C+;+;)当我按顺序遍历树时,会发生运行时错误

C++ (C+;+;)当我按顺序遍历树时,会发生运行时错误,c++,C++,我的代码,并且在stk.pop()中发现了错误 我不明白为什么plz能帮上忙 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :

我的代码,并且在stk.pop()中发现了错误
我不明白为什么plz能帮上忙

/**
 * 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 intree(TreeNode *r, stack<int>& stk){
        if(r->right == nullptr && r->left == nullptr) {
            stk.push(r->val);
        }
        if(r->right != nullptr) intree(r->right, stk);
        if(r->left != nullptr) intree(r->left, stk);
    }
    void outree(TreeNode *r, stack<int>& stk){
        if(r->right == nullptr && r->left == nullptr && !stk.empty()){
            if(stk.size() != 0 && r->val == stk.top())
                stk.pop();}//error here
        }
        if(r->left != nullptr) outree(r->left, stk);
        if(r -> right != nullptr) outree(r->right, stk);

    }
    bool leafSimilar(TreeNode* root1, TreeNode* root2) {
        stack<int> stk;
        intree(root1, stk);
        outree(root2, stk);
        cout<<stk.top();
        if(stk.size() == 0) return true;
        return false;
    }
};

/**
*二叉树节点的定义。
*树状结构{
*int-val;
*TreeNode*左;
*TreeNode*对;
*TreeNode():val(0),左(nullptr),右(nullptr){
*树节点(intx):val(x),左(nullptr),右(nullptr){
*树节点(intx,树节点*左,树节点*右):val(x),左(左),右(右){
* };
*/
类解决方案{
公众:
void intree(TreeNode*r、stack和stk){
如果(r->right==nullptr&&r->left==nullptr){
标准推力(r->val);
}
如果(r->right!=nullptr)在树中(r->right,stk);
如果(r->left!=nullptr)在树中(r->left,stk);
}
空出树(TreeNode*r、堆栈和stk){
如果(r->right==nullptr&&r->left==nullptr&&!stk.empty()){
如果(stk.size()!=0&&r->val==stk.top())
stk.pop();}//此处有错误
}
如果(r->left!=nullptr)outree(r->left,stk);
如果(r->right!=nullptr)outree(r->right,stk);
}
bool-leaftsimular(TreeNode*root1,TreeNode*root2){
堆栈stk;
intree(root1,stk);
outree(root2,stk);
库特