题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
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:
TreeNode* Convert(TreeNode* pRootOfTree) {
if (!pRootOfTree)
return NULL;
if (!pRootOfTree->left && !pRootOfTree->right)
return pRootOfTree;
TreeNode* rootLeft = nullptr, *rootRight = nullptr;
rootLeft = Convert(pRootOfTree->left);
rootRight = Convert(pRootOfTree->right);
if (rootLeft) {
auto p = rootLeft;
while (p && p->right) {
p = p->right;
}
p->right = pRootOfTree;
pRootOfTree->left = p;
}
if (rootRight) {
rootRight->left = pRootOfTree;
pRootOfTree->right = rootRight;
}
return rootLeft ? rootLeft : pRootOfTree;
}
};
阿里云成长空间 733人发布