题解 | #找到搜索二叉树中两个错误的节点#

找到搜索二叉树中两个错误的节点

http://www.nowcoder.com/practice/4582efa5ffe949cc80c136eeb78795d6

Morris遍历即可

class Solution {
public:
    vector<int> findError(TreeNode* root) {
        // write code here
        vector<int> res;
        TreeNode* cur = root;
        int pre = 0;
        while(cur){
            if(cur->left){
                TreeNode* temp = cur->left;
                while(temp->right != nullptr && temp->right != cur){
                    temp = temp->right;
                }
                if(temp->right == nullptr){
                    temp->right = cur;
                    cur = cur->left;
                }else{
                    temp->right == nullptr;
                    if(cur->val < pre){
                        res.push_back(pre);
                        res.push_back(cur->val);
                    }
                    pre = cur->val;
                    cur = cur->right;
                }
            }else{
                if(cur->val < pre){
                    res.push_back(pre);
                    res.push_back(cur->val);
                }
                pre = cur->val;
                cur = cur->right;
            }
        }
        if(res.size() == 2){
            return {res[1],res[0]};
        }else{
            return {res[3],res[0]};
        }
    }
};
全部评论

相关推荐

04-29 22:35
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务