class Solution {
private Node head ;
private Node pre ;
public Node treeToDoublyList(Node root) {
if(root==null) return null;
pre = null;
dfs(root);
head.left = pre;
pre.right = head;
return head;
}
//中序遍历
//head是头
//pre
public void dfs(Node root) {
if(root==null) return;//越过叶子节点
//递归左子树
dfs(root.left);
//处理根节点
if(pre==null){//前几节点为null,说明是头节点
head = root;
pre = head;
}else{
pre.right = root;
root.left = pre;
pre = pre.right;
}
//递归右子树
dfs(root.right);
}
}