题解 | 二叉搜索树与双向链表
二叉搜索树与双向链表
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) { } };*/ #include <vector> class Solution { public: TreeNode* Convert(TreeNode* pRootOfTree) { if(pRootOfTree == nullptr) { return nullptr;; } vector<TreeNode*>vec; inOrder(pRootOfTree, vec); for(int i = 0; i < vec.size(); i++) { if(i == 0) { vec[i]->left = nullptr; vec[i]->right = vec[i + 1]; } else { vec[i]->left = vec[i - 1]; vec[i]->right = vec[i + 1]; } } return vec[0]; } void inOrder(TreeNode *node, vector<TreeNode*> &vec) // LVR { if(node != nullptr) { inOrder(node->left, vec); vec.push_back(node); inOrder(node->right, vec); } } };