- 在主函数中,递归操作之后,将pre.right = head, head.left = pre含义是将收尾连接起来
- 在递归函数中,终止条件是当cur 为null的时候(如上图2)
- 使用中序遍历来操作
- if(pre == null)head = cur; 当一开始的时候,pre 为null,此时使用 head 来记录cur,因为之后要返回head
- 具体的实现过程见(图3)
class Solution {
Node head, pre;
public Node treeToDoublyList(Node root) {
if(root == null) return null;
dfs(root);
pre.right = head;
head.left = pre;
return head;
}
public void dfs(Node cur){
//截止条件
if(cur == null) return;
dfs(cur.left);
if(pre == null){
head = cur;
}
else {
pre.right = cur;
}
cur.left = pre;
pre = cur;
dfs(cur.right);
}
}