14 Binary Trees
14 Binary Trees
2
Picture of a binary tree
The root is
drawn at the top a
b c
d e f
g h i j k
l
3
Left ≠ Right
The following two binary trees are different:
A A
B B
In the first binary tree, node A has a left child but no right
child; in the second, node A has a right child but no left child
Put another way: Left and right are not relative terms
4
More terminology
Node A is the parent of node B if node B is a child of A
Node A is an ancestor of node B if A is a parent of B, or
if some child of A is an ancestor of B
In less formal terms, A is an ancestor of B if B is a child of A,
or a child of a child of A, or a child of a child of a child of A,
etc.
Node B is a descendant of A if A is an ancestor of B
Nodes A and B are siblings if they have the same parent
5
Size and depth
The size of a binary tree is the
a number of nodes in it
This tree has size 12
b c The depth of a node is its
distance from the root
d e f
a is at depth zero
e is at depth 2
g h i j k
The depth of a binary tree is
l the depth of its deepest node
This tree has depth 4
6
Balance
a a
b c b
c e
d e f g
d f
h i j
g h
A balanced binary tree
i j
An unbalanced binary tree
A binary tree is balanced if every level above the lowest is “full”
(contains 2n nodes)
In most applications, a reasonably balanced binary tree is desirable
7
Sorted binary trees
A binary tree is sorted if every node in the tree is larger
than (or equal to) its left descendants, and smaller than
(or equal to) its right descendants
Equal nodes can go either on the left or the right (but it
has to be consistent)
10
8 15
4 12 20
17
8
Tree traversals
A binary tree is defined recursively: it consists of a root, a
left subtree, and a right subtree
To traverse (or walk) the binary tree is to visit each node in
the binary tree exactly once
Tree traversals are naturally recursive
Since a binary tree has three “parts,” there are six possible
ways to traverse the binary tree:
root, right, left
root, left, right
right, root, left
left, root, right
right, left, root
left, right, root
9
Preorder traversal
In preorder, the root is visited first
Here’s a preorder traversal to print out all the
elements in the binary tree:
10
Inorder traversal
In inorder, the root is visited in the middle
Here’s an inorder traversal to print out all the
elements in the binary tree:
11
Postorder traversal
In postorder, the root is visited last
Here’s a postorder traversal to print out all the
elements in the binary tree:
12
Tree traversals using “flags”
The order in which the nodes are visited during a tree
traversal can be easily determined by imagining there is a
“flag” attached to each node, as follows:
B C B C B C
D E F G D E F G D E F G
14
Other traversals
The other traversals are the reverse of these three
standard ones
That is, the right subtree is traversed before the left subtree
is traversed
Reverse preorder: root, right subtree, left subtree
Reverse inorder: right subtree, root, left subtree
Reverse postorder: right subtree, left subtree, root
15
The End
16