题解 | 二叉搜索树与双向链表
二叉搜索树与双向链表
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 { private: queue<TreeNode*> q; void midTrace(TreeNode* root){ if(root == nullptr) return; midTrace(root->left); q.push(root); midTrace(root->right); return; } public: TreeNode* Convert(TreeNode* pRootOfTree) { midTrace(pRootOfTree); TreeNode* head = nullptr; TreeNode* pre = nullptr; while(!q.empty()){ TreeNode* tmp = q.front(); q.pop(); if(pre != nullptr){ tmp->left=pre; pre->right= tmp; pre = tmp; } else{ pre =tmp; head = tmp; } } return head; } };