题解 | 二叉搜索树与双向链表
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
pair<TreeNode*, TreeNode*> ConvertList(TreeNode* root)
{
if((root==nullptr)||(root->left==nullptr && root->right==nullptr))return {root,root};
auto leftList=ConvertList(root->left);
auto rightList=ConvertList(root->right);
TreeNode* front=root,*end=root;
if(leftList.second){
front=leftList.first;
root->left=leftList.second;
leftList.second->right=root;
}
if(rightList.first)
{
end=rightList.second;
root->right=rightList.first;
rightList.first->left=root;
}
return {front,end};
}
TreeNode* Convert(TreeNode* pRootOfTree) {
auto p=ConvertList(pRootOfTree);
return p.first;
}
};
递归实现线索二叉树
查看13道真题和解析