def simple_tree(): t = BinaryTree() t.insert(5) t.insert(10) t.insert(2) t.insert(17) return t
def unbalanced_tree(): t = BinaryTree() t.insert(5) t.insert(6) t.insert(7) t.insert(8) t.insert(9) t.insert(4) return t
def balanced_tree(): t = BinaryTree() t.insert(5) t.insert(2) t.insert(1) t.insert(3) t.insert(8) t.insert(7) t.insert(9) return t
def complex_tree(): t = BinaryTree() t.insert(100) t.insert(80) t.insert(60) t.insert(40) t.insert(20) t.insert(50) t.insert(70) t.insert(90) t.insert(85) t.insert(95) t.insert(120) t.insert(140) t.insert(160) t.insert(180) t.insert(110) t.insert(175) t.insert(170) t.insert(176) return t
def test_balance_one_node_tree_returns_1(): t = BinaryTree() t.insert(1) assert t.balance() == 0
def test_binarytree(): t = BinaryTree() assert t.root is None
def empty_tree(): t = BinaryTree() return t
def large_binary_tree(): bt = BinaryTree([20, 18, 12, 19, 11, 14, 40, 31, 22, 33]) return bt
def test_binary_tree_initializes(): assert BinaryTree([1, 2, 3])
def small_binary_tree(): bt = BinaryTree([10, 4, 39]) return bt
if root is None: return [] stack, res = [(root, False)], [] while stack: cur, visited = stack.pop() if cur is None: continue if visited: res.append(cur.val) else: stack.append((cur, True)) stack.append((cur.right, False)) stack.append((cur.left, False)) return res if __name__ == '__main__': bst = BinaryTree(serialize=','.join(map(str, range(1, 1 << 5)))) pre = bst.pre_order() assert pre == pre_order1(bst.root) assert pre == pre_order2(bst.root) assert pre == pre_order3(bst.root) assert pre == pre_order4(bst.root) in_ = bst.in_order() assert in_ == in_order1(bst.root) assert in_ == in_order2(bst.root) assert in_ == in_order3(bst.root) post = bst.post_order() assert post == post_order1(bst.root) assert post == post_order2(bst.root)
def __init__(self): self.tree = BinaryTree() self.size = 0