题目是把一个链表搞成二叉搜索树,链表直接不太好弄,我先把链表的值存入数组中,然后再递归调用构建二叉搜索树。
public TreeNode paixu(int[] li,int i, int j){
if(i==j){
TreeNode t = new TreeNode(li[i]);
return t;
}
if(i<j){
int mid=(i+j)/2;
TreeNode t = new TreeNode(li[mid]);
t.left=paixu(li,i,mid-1);
t.right=paixu(li,mid+1,j);
return t;
}
return null;
}
public TreeNode sortedListToBST(ListNode head) {
if(head==null) return null;
int num=0;
ListNode root = head;
while(head!=null){
num++;
head=head.next;
}
int[] li = new int[num];
head = root;
for(int i=0;i<num;i++){
li[i]=head.val;
head=head.next;
}
int i=0,j=num-1;
if(i<=j){
return paixu(li,i,j);
}
return null;
}