- 这个题思路不难,只能是中序遍历加两个链接,相当于重新做一个双向链表。
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++ 传地址的时候不要忘记&
网友评论