leetcode 426

图片.png
图片.png
  • 这个题思路不难,只能是中序遍历加两个链接,相当于重新做一个双向链表。
void inorder(Node* root,Node*& pre,Node*& head){
        if(root==nullptr)
            return ;
        inorder(root->left,pre,head);
        if(head==nullptr){
            head=root;
            pre=root;
        }
        else{
            pre->right=root;
            root->left=pre;
            pre=root;
        }
        inorder(root->right,pre,head);
    }
    Node* treeToDoublyList(Node* root) {
        if(root==nullptr)
            return nullptr;
        Node* head=nullptr;
        Node* pre=nullptr;
        inorder(root,pre,head);
        pre->right=head;
        head->left=pre;
        return head;
    }

注意void inorder(Node* root,Node& pre,Node& head)
C++ 传地址的时候不要忘记&

你可能感兴趣的:(leetcode 426)