首先是让转化成一个排序的
给的是二叉搜索树,所以只需要将其中序遍历,得到的就是排序好的。
然后只要再把中序遍历的数组转化为双向链表即可。
import java.util.*;
public class Solution {
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree == null){
return pRootOfTree;
}
List<TreeNode> list = new ArrayList<>();
mid(pRootOfTree,list);
TreeNode head = list.get(0);
TreeNode temp = head;
head.left = null;
for(int i=1;i<list.size();i++){
temp.right=list.get(i);
list.get(i).left = temp;
temp = temp.right;
}
return head;
}
public void mid(TreeNode pRootOfTree,List<TreeNode> list){
if(pRootOfTree==null){
return;
}
mid(pRootOfTree.left,list);
list.add(pRootOfTree);
mid(pRootOfTree.right,list);
}
}