Convert Sorted List to Binary Search Tree @ LeetCode (Python)
kitt
posted @ 2014年3月07日 21:15
in LeetCode
, 2303 阅读
先把链表转成数组,再递归。每次数组的中点元素为root, 再递归地建立左右子树。
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param head, a list node # @return a tree node def sortedListToBST(self, head): num = []; curr = head while curr != None: num.append(curr.val) curr = curr.next return self.createBST(num, 0, len(num) - 1) def createBST(self, num, start, end): if start > end: return None mid = (start + end) / 2 root = TreeNode(num[mid]) root.left = self.createBST(num, start, mid - 1) root.right = self.createBST(num, mid + 1, end) return root