题目链接:
JZ26 二叉搜索树与双向链表
本题思路:
public class Solution {
TreeNode pre, head;
public TreeNode Convert(TreeNode pRootOfTree) {
// base case
if(pRootOfTree == null) return null;
// 中序遍历 构造链表
inOrder(pRootOfTree);
return head;
}
// 中序遍历
public void inOrder(TreeNode cur) {
// base case
if(cur == null) return;
inOrder(cur.left);
// 中序遍历左根右 根的位置做123点
if(pre != null) {
pre.right = cur; // 1 向右连接
} else {
// pre初始化为空 此时cur为头节点
head = cur;
}
cur.left = pre; // 2 向左连接
pre = cur; // 3 逐个后移
inOrder(cur.right);
}
}