题解 | 二叉搜索树与双向链表
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
import java.util.*;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public TreeNode head=null;
public TreeNode pre=null;
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null){
return null;
}
Convert(pRootOfTree.left);
if(pre==null){
head=pRootOfTree;
pre=pRootOfTree;
}
else{
pre.right=pRootOfTree;
pRootOfTree.left=pre;
pre=pRootOfTree;
}
Convert(pRootOfTree.right);
return head;
}
}
这个题我做了好几遍了,今天还是写不出来,555~
思路:利用树的中序遍历,需要定义一个pre指针和一个头指针。当遍历到当前节点的时候对当前节点的指针进行改造。让当前节点的左指针指向pre, pre.right则指向当前节点,并且更新pRootOfTree。

