// 第一个节点的前驱节点是最后一个节点
// 最后一个节点的后继节点是第一个节点
// 树中节点左指针需要指向前驱节点,树中节点右指针需要指向后继节点
// 中序排序有序,二叉搜索树同样有序
class Solution {
Node first, pre;
public Node treeToDoublyList(Node root) {
if(root == null) return null;
dfs(root);
// 连接起来做个循环
pre.right = first;
first.left = pre;
return first;
}
public void dfs(Node root){
if(root==null) return;
dfs(root.left);
root.left = pre;
if(pre!=null) pre.right = root;
else first = root;
pre = root;
dfs(root.right);
}
}