Convert Sorted List to Binary Search Tree --- LeetCode

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST



解题思路:中序递归遍历构造,每次遍历找到中间节点即为根节点,左边为左子树,右边为右子树。

public class Solution {
    public TreeNode search(ListNode head,int left,int right){
     TreeNode node=null;
     if(left>right){
    return null;
     }
     int index=(left+right)/2;
     ListNode middle=head;
     for(int i=left;i<index;i++){
     middle=middle.next;        
     }
     node=new TreeNode(middle.val);
     node.left=search(head,left,index-1);
     node.right=search(middle.next,index+1,right);
     return node;
}

    public TreeNode sortedListToBST(ListNode head) {
          TreeNode root=null;
     if(head==null){
    return root; 
     }
     ListNode node=head;
     int count=1;
     while(node.next!=null){       
     node=node.next;
     count++;
     }
     root=search(head,1,count);
          return root;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值