题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
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; } };