二叉树中序遍历报错

查看 29|回复 0
作者:nenseso   
运行报错:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==20==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc48a9cff8 (pc 0x0000003a29b9 bp 0x7ffc48a9d010 sp 0x7ffc48a9d000 T0)
==20==ABORTING
这是我的解法,有没有大佬指点一下哪里出问题了,我半天没看出来
/**
* 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:
    TreeNode *preNode(TreeNode *root) {
        if (root == nullptr) return nullptr;
        if (root->left == nullptr) return nullptr;
        TreeNode *cur = root->left;
        while (cur->right != nullptr) {
            if (cur->right == root) {
                break;
            }
            cur = cur->right;
        }
        return cur;
    }
   
    vector[i] inorderTraversal(TreeNode* root) {
        if (root == nullptr) return {};
        TreeNode *cur = root;
        std::vector[i]res;
        
        while (cur != nullptr) {
            if (cur->left != nullptr) {
                TreeNode *pre = preNode(cur);
                if (pre->right != nullptr) {
                    res.push_back(cur->val);
                    cur = cur->right;
                } else {
                    pre->right = cur;
                    cur = cur->left;
                }
            } else {
                res.push_back(cur->val);
                cur = cur->right;
            }
        }
        
        return res;
    }
   
};
您需要登录后才可以回帖 登录 | 立即注册

返回顶部