因为二叉搜索树的中序遍历是有序的,所以选择中序遍历二叉树,在遍历的过程中将二叉搜索树转换为双向链表。

使用一个指针 pre 指向当前遍历节点的前一个节点。关键的三步操作

  1. 前一个节点 pre 的 right 指向当前节点(注意 pre 不能为空)pre->right = cur

  2. 当前节点的 left 指向前一个节点 root->left = pre

  3. 不要忘了 pre 指向当前节点 pre =root

就构成了双向关联,当然上面两步中的关联可能原二叉树中就有,但是不影响答案。