class Solution(object):
def buildTree(self, preorder, inorder):
"""
:type preorder: List[int]
:type inorder: List[int]
:rtype: TreeNode
"""
if inorder:
index = inorder.index(preorder.pop(0))
root = TreeNode(inorder[index])
root.left = self.buildTree(preorder,inorder[0:index])
root.right = self.buildTree(preorder,inorder[index+1:])
return root
class Solution(object):
def buildTree(self, inorder, postorder):
"""
:type inorder: List[int]
:type postorder: List[int]
:rtype: TreeNode
"""
if inorder:
root = TreeNode(postorder.pop())
index = inorder.index(root.val)
root.right = self.buildTree(inorder[index+1:],postorder)
root.left = self.buildTree(inorder[:index],postorder)
return root
class Solution(object):
def sortedListToBST(self, head):
"""
:type head: ListNode
:rtype: TreeNode
"""
if not head:
return
if not head.next:
return TreeNode(head.val)
slow,fast = head,head.next.next
while fast and fast.next:
fast = fast.next.next
slow = slow.next
tep = slow.next
slow.next = None
root = TreeNode(tep.val)
root.left = self.sortedListToBST(head)
root.right = self.sortedListToBST(tep.next)
return root