from geeksforgeeks.datastructure.binary_tree.binary_tree import Node def sum_of_all_nodes(root): if not root: return 0 return root.val + sum_of_all_nodes(root.left) + sum_of_all_nodes( root.right) tree = Node(8) tree.left = Node(3) tree.right = Node(10) tree.left.left = Node(1) tree.left.right = Node(6) tree.right.right = Node(14) tree.right.right.left = Node(13) tree.left.right.left = Node(4) tree.left.right.right = Node(7) print(sum_of_all_nodes(tree))
# bfs = level order from geeksforgeeks.datastructure.binary_tree.binary_tree import Node def bfs(node): q = [node] while q: x = q.pop(0) print(x.val, end=' ') if x.left: q.append(x.left) if x.right: q.append(x.right) root = Node(1) root.left = Node(2) root.left.left = Node(4) root.left.right = Node(5) root.right = Node(3) bfs(root)
def boundary_right(node): if not node: return if node.right: print(node.val, end=' ') boundary_right(node.right) elif node.left: print(node.val, end=' ') boundary_right(node.left) def print_leaves(node): if node: print_leaves(node.left) if not node.left and not node.right: print(node.val, end=' ') print_leaves(node.right) tree = Node(20) tree.left = Node(8) tree.left.left = Node(4) tree.left.right = Node(12) tree.left.right.left = Node(10) tree.left.right.right = Node(14) tree.right = Node(22) tree.right.right = Node(25) boundary_traversal(tree)
if lvl == 1: print(node.val, end=' ') return print_level(node.left, lvl - 1) print_level(node.right, lvl - 1) def reverse_level_order_stack(root): s, q = [], [root] while q: node = q.pop(0) s.append(node) if node.right: q.append(node.right) if node.left: q.append(node.left) while s: print(s.pop().val, end=' ') tree = Node(1) tree.left = Node(2) tree.right = Node(3) tree.left.left = Node(4) tree.left.right = Node(5) tree.right.left = Node(6) tree.right.right = Node(7) reverse_level_order(tree) print() reverse_level_order_stack(tree)
print(node.val, end=' ') inorder(node.right) def insert(node, key): q = [node] while q: # level order x = q.pop(0) if not x.left: x.left = Node(key) break else: q.append(x.left) if not x.right: x.right = Node(key) break else: q.append(x.right) root = Node(10) root.left = Node(11) root.left.left = Node(7) root.right = Node(9) root.right.left = Node(15) root.right.right = Node(8) inorder(root) insert(root, 12) print() inorder(root)