Professional Documents
Culture Documents
Trees
Neil Rhodes
Department of Computer Science and Engineering
University of California, San Diego
NP VP
I V NP
ate Det N
the cake
Syntax tree for an Expression
2 sin(3z − 7)
2 sin
× 7
3 z
Geography Hierarchy
Jackson
Wyoming
Cheyenne
United States ···
Montgomery
Alabama
World Mobile
Wales
···
Scotland
United Kingdom
Northern Ireland
England
Animal Kingdom (partial)
Arachnid
Invertebrate ··· Butterflies
Amphibian Beetles
Animal
Bird Rodents
Fish Carnivores
Mammal ···
Primates
Marsupials
Abstract Syntax Tree for Code
while x < 0:
x = x + 2
foo(x) while
var: x const: 2
Binary Search Tree
Les
Cathy Sam
Tony Wendy
Definition
A Tree is:
empty, or
a node with:
a key, and
a list of child trees.
Simple Tree
Empty tree:
Sally
Terminology
Fred
Sam Hugh
Terminology
Fred
Sam Hugh
Root:
top node in the tree
Terminology
Fred
Sam Hugh
A child has a line down directly
from a parent
Terminology
Fred
Sam Hugh
Kate is a parent of Sam
Terminology
Fred
Sam Hugh
Sam is a child of Kate
Terminology
Fred
Sam Hugh
Ancestor:
parent, or parent of parent, etc.
Terminology
Fred
Sam Hugh
Ancestors of Sam
Terminology
Fred
Sam Hugh
Descendant:
child, or child of child, etc.
Terminology
Fred
Sam Hugh
Descendants of Fred
Terminology
Fred
Sam Hugh
Sibling:
sharing the same parent
Terminology
Fred
Sam Hugh
Leaf :
node with no children
Terminology
Fred
Sam Hugh
Interior node
(non-leaf)
Terminology
Fred
Sam Hugh
Level: 1+ num edges between root
and node
Terminology
Fred
Sam Hugh
Level 1
Terminology
Fred
Sam Hugh
Level 2
Terminology
Fred
Sam Hugh
Level 3
Terminology
Fred
Sam Hugh
Height: maximum depth of subtree
node and farthest leaf
Terminology
Fred
Sam Hugh
Height 1
Terminology
Fred
Sam Hugh
Height 2
Terminology
Fred
Sam Hugh
Height 3
Terminology
Kate Sally
InOrderTraversal(tree)
if tree = nil:
return
InOrderTraversal(tree.left)
Print(tree.key)
InOrderTraversal(tree.right)
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet Wendy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet Wendy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet Wendy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet Wendy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet Wendy
InOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Cathy Frank Les Nancy Sam
Tony Violet Wendy
Depth-first
PreOrderTraversal(tree)
if tree = nil:
return
Print(tree.key)
PreOrderTraversal(tree.left)
PreOrderTraversal(tree.right)
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony Wendy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony Wendy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony Wendy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony Wendy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony Wendy
PreOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Alex Frank Sam Nancy
Violet Tony Wendy
Depth-first
PostOrderTraversal(tree)
if tree = nil:
return
PostOrderTraversal(tree.left)
PostOrderTraversal(tree.right)
Print(tree.key)
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output:
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet Sam
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet Sam
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet Sam
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet Sam Les
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet Sam Les
PostOrderTraversal
Les
Cathy Sam
Tony Wendy
Output: Alex Frank Cathy Nancy Tony
Wendy Violet Sam Les
Breadth-first
LevelTraversal(tree)
if tree = nil: return
Queue q
q.Enqueue(tree)
Breadth-first
LevelTraversal(tree)
if tree = nil: return
Queue q
q.Enqueue(tree)
while not q.Empty() :
node ← q.Dequeue()
Breadth-first
LevelTraversal(tree)
if tree = nil: return
Queue q
q.Enqueue(tree)
while not q.Empty() :
node ← q.Dequeue()
Print(node)
Breadth-first
LevelTraversal(tree)
if tree = nil: return
Queue q
q.Enqueue(tree)
while not q.Empty() :
node ← q.Dequeue()
Print(node)
if node.left ̸= nil:
q.Enqueue(node.left)
Breadth-first
LevelTraversal(tree)
if tree = nil: return
Queue q
q.Enqueue(tree)
while not q.Empty() :
node ← q.Dequeue()
Print(node)
if node.left ̸= nil:
q.Enqueue(node.left)
if node.right ̸= nil:
q.Enqueue(node.right)
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output:
Queue: Les
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output:
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les
Cathy Sam
Tony Wendy
Output: Les
Queue: Sam
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy
Queue: Sam
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy
Cathy Sam
Tony Wendy
Output: Les Cathy
Cathy Sam
Tony Wendy
Output: Les Cathy Sam
Cathy Sam
Tony Wendy
Output: Les Cathy Sam
Cathy Sam
Tony Wendy
Output: Les Cathy Sam
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank
Queue: Violet
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Queue: Violet
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Queue: Violet
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet
Queue: Tony Wendy
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet
Queue: Wendy
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet Tony
Queue: Wendy
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet Tony
Queue: Wendy
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet Tony
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet Tony Wendy
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet Tony Wendy
Queue:
LevelTraversal
Les
Cathy Sam
Tony Wendy
Output: Les Cathy Sam Alex Frank Nancy
Violet Tony Wendy
Queue:
Summary
Trees are used for lots of different
things.
Summary
Trees are used for lots of different
things.
Trees have a key and children.
Summary
Trees are used for lots of different
things.
Trees have a key and children.
Tree walks: DFS (pre-order, in-order,
post-order) and BFS.
Summary
Trees are used for lots of different
things.
Trees have a key and children.
Tree walks: DFS (pre-order, in-order,
post-order) and BFS.
When working with a tree, recursive
algorithms are common.
Summary
Trees are used for lots of different
things.
Trees have a key and children.
Tree walks: DFS (pre-order, in-order,
post-order) and BFS.
When working with a tree, recursive
algorithms are common.
In Computer Science, trees grow down!