[Leetcode] Convert Sorted List to Binary Search Tree

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

由排序链表构造二叉树。根据数组构造二叉树的思想,想到对链表不断二分的方式完成功能。

TreeNode *sortedListToBST(ListNode *head)
{
    TreeNode *root=NULL;
    if(!head)	 return root;  
    if(!head->next) return root=new TreeNode(head->val);
	
    ListNode *p=head, *q=head, *pre=NULL;  

    while(q&&q->next!=NULL)           //下面是链表二分过程
    {  
        q=q->next->next;  
        pre=p;                          //pre是用来后面断开链表的
        p=p->next;			//步长不同
    }  
    pre->next=NULL;			//断开链表
    root=new TreeNode(p->val);
    p=p->next;			       //构造了根节点,不能再用了	
    root->left=sortedListToBST(head);  
    root->right=sortedListToBST(p);								
    return root;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值