This Binary Trees lesson is for a beginner. Read the short notes, run each example, then change one name or number and run it again.
A binary tree gives each node at most two children, usually called left and right.
Reading the left child, then the node, then the right child, is an in-order walk.
Example 1: Start here
A binary tree does not by itself keep the values in sorted order.
class Node: # a template for objects
def __init__(self, value, left=None, right=None): # runs when you create the object
self.value = value # store this on the object
self.left = left # store this on the object
self.right = right # store this on the object
root = Node(2, Node(1), Node(3)) # one object
print(root.left.value, root.value, root.right.value) # a comma prints each value, with a space between
Example 2: Walk the values
Binary Trees starts by visiting one value at a time. Read the printed lines from top to bottom.
values = [12, 3, 11, 7] # a list; the values stay in this order
for value in values: # repeat the indented lines once per value
print(value)
Example 3: Keep the largest
Many data-structure lessons reduce a list to one answer. This one remembers the largest number seen so far.
values = [12, 3, 11, 7] # a list; the values stay in this order
best = values[0] # the first value
for value in values: # repeat the indented lines once per value
if value > best: # run the indented lines only when this is true
best = value # another name for the same value
print(best)
Example 4: Search for a target
A search asks one yes-or-no question: is the target in the collection? Binary Trees builds on that question.
values = [3, 12, 11] # a list; the values stay in this order
target = 12 # a whole number
print(target in values) # in is True when the value is found
