Leetcode Convert Sorted List to BST

Bottom-up 较难的题目

1. 和 google code jam 分数那题差不多, 需要用到 &

TreeNode* buildTree(ListNode* &head, int st, int ed)  {
	if(st > ed) return NULL;

	int mid = (st+ed)>>1;

	TreeNode* lchild = buildTree(head, st, mid-1);
	TreeNode* parent = new TreeNode(head->val);
	head = head->next;
	TreeNode* rchild = buildTree(head, mid+1, ed);

	parent->left = lchild;
	parent->right = rchild;

	return parent;
}

class Solution {
public:
    TreeNode *sortedListToBST(ListNode *head) {
        int len = 0;
        ListNode *cursor = head;
        while(cursor)  {
        	len ++;
        	cursor = cursor->next;
        }

        if(len == 0) return NULL;
        cursor = head;
        return buildTree(cursor, 0, len-1);
    }
};

  

原文地址:https://www.cnblogs.com/zhouzhuo/p/3684438.html