utils
1class TreeNode: 2 def __init__(self, val=0, left=None, right=None): 3 self.val = val 4 self.left = left 5 self.right = right 6 7 def __eq__(self, other) -> bool: 8 return ( 9 self.val == other.val 10 and self.left == other.left 11 and self.right == other.right 12 ) 13 14 15class ListNode: 16 def __init__(self, val=0, next=None): 17 self.val = val 18 self.next = next 19 20 21def to_binary_tree(items): 22 if not items: 23 return None 24 25 it = iter(items) 26 root = TreeNode(next(it)) 27 q = [root] 28 for node in q: 29 val = next(it, None) 30 if val is not None: 31 node.left = TreeNode(val) 32 q.append(node.left) 33 val = next(it, None) 34 if val is not None: 35 node.right = TreeNode(val) 36 q.append(node.right) 37 return root 38 39 40def to_bst(items): 41 items.sort() 42 43 def sorted_list_to_bst(items): 44 if not items: 45 return None 46 mid = len(items) // 2 47 root = TreeNode(items[mid]) 48 root.left = sorted_list_to_bst(items[:mid]) 49 root.right = sorted_list_to_bst(items[mid + 1 :]) 50 return root 51 52 return sorted_list_to_bst(items)
class
TreeNode:
2class TreeNode: 3 def __init__(self, val=0, left=None, right=None): 4 self.val = val 5 self.left = left 6 self.right = right 7 8 def __eq__(self, other) -> bool: 9 return ( 10 self.val == other.val 11 and self.left == other.left 12 and self.right == other.right 13 )
class
ListNode:
def
to_binary_tree(items):
22def to_binary_tree(items): 23 if not items: 24 return None 25 26 it = iter(items) 27 root = TreeNode(next(it)) 28 q = [root] 29 for node in q: 30 val = next(it, None) 31 if val is not None: 32 node.left = TreeNode(val) 33 q.append(node.left) 34 val = next(it, None) 35 if val is not None: 36 node.right = TreeNode(val) 37 q.append(node.right) 38 return root
def
to_bst(items):
41def to_bst(items): 42 items.sort() 43 44 def sorted_list_to_bst(items): 45 if not items: 46 return None 47 mid = len(items) // 2 48 root = TreeNode(items[mid]) 49 root.left = sorted_list_to_bst(items[:mid]) 50 root.right = sorted_list_to_bst(items[mid + 1 :]) 51 return root 52 53 return sorted_list_to_bst(items)