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

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

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]};
        }
    }
};
全部评论

相关推荐

迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务