二叉搜索树转换成双向循环链表,分治算法

https://leetcode-cn.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/solution/jiang-er-cha-sou-suo-shu-zhuan-hua-wei-pai-xu-de-s/

/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* left;
    Node* right;

    Node() {}

    Node(int _val) {
        val = _val;
        left = NULL;
        right = NULL;
    }

    Node(int _val, Node* _left, Node* _right) {
        val = _val;
        left = _left;
        right = _right;
    }
};
*/

class Solution {
public:
    pair<Node*, Node*> divide(Node* root) {
        Node *begin, *end;
        begin = root, end = root;

        if (root->left != NULL) {
            auto p = divide(root->left);
            p.second->right = root;
            root->left = p.second;
            begin = p.first;
        }
        if (root->right != NULL) {
            auto p = divide(root->right);
            root->right = p.first;
            p.first->left = root;
            end = p.second;
        }

        return {begin, end};
    }
    Node* treeToDoublyList(Node* root) {
        if (root == NULL) {
            return NULL;
        }

        auto p = divide(root);

        p.first->left = p.second;
        p.second->right = p.first;

        return p.first;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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