题意:
方法:
中序遍历
思路:二叉搜索树的中序遍历是有序的。因此,我们对二叉搜索树中序遍历,并将结果存入一个双向链表中。
class Solution {
public:
TreeNode *head,*p;//新建双向链表
int i=0;
TreeNode* Convert(TreeNode* pRootOfTree) {
if(pRootOfTree==nullptr){
i++;
return nullptr;
}
Convert(pRootOfTree->left);//递归左儿子
if(i==1){//当遍历到最左下角时,则是链表的第一个节点
head=pRootOfTree;
p=pRootOfTree;
}else{//否则,拼接链表的其他节点
p->right=pRootOfTree;
pRootOfTree->left=p;
p=p->right;
}
Convert(pRootOfTree->right);//递归右儿子
return head;
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号