class Solution {
TreeNode *pre, *res;
public:
void dfs(TreeNode* root) {
if (root == nullptr) return;
dfs(root->left);
pre == nullptr ? res = root : pre->right = root;
// pre记录双向链表中位于root左侧的节点, 如果pre不为空,cur左侧存在节点pre,所以把pre的右节点更新为root
root->left = pre, pre = root;
// pre是否为空对我们的root->left = pre无影响, 然后让pre指向当前的root
dfs(root->right);
}
// 这个是我们中序遍历的模板
TreeNode* Convert(TreeNode* pRootOfTree) {
if (pRootOfTree == nullptr) return pRootOfTree;
dfs(pRootOfTree);
return res;
}
};