Download of a tree

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Linked list wikipedia , lookup

Lattice model (finance) wikipedia , lookup

Quadtree wikipedia , lookup

B-tree wikipedia , lookup

Interval tree wikipedia , lookup

Red–black tree wikipedia , lookup

Binary tree wikipedia , lookup

Binary search tree wikipedia , lookup

Transcript
COMP 103
Introduction to Trees
RECAP-TODAY
2
RECAP

Linked List, Linked Stack, Linked Queue

Other linked collections
TODAY

Introduction to Trees

Reading: Chapter 16 in textbook
Other linked collections
3

LinkedStack and LinkedQueue
 All

the key operations are O(1)
Set
 Can
store sorted or unsorted
 What is the cost of add, remove, contains, size, equals in each
case?

Bag
 Same

as set, but add a count to each node.
Map
 Same
as set, but store value as well as key in each node
 Or store pointed to a key-value pair
 What is the cost of get, put, remove?
Linear vs. Hierarchical Structures
4

So far we’ve looked at unordered structures and linear structures:

Unordered structures have no structural order between items:


Linear structures have items arranged in order one after another



Set, Bag, Map
List, Stack, Queue…
Some data have a hierarchical or ‘tree-like’ structure
Hierarchical structure have items arranged in levels, with items
‘above’ or ‘below’ the other, such as






Family tree
Organisational Charts
Taxonomies
Filing systems (paper-based, computer-based)
Models of shapes for computer graphics
Programs/decision processes…. And so on….
Trees
5

We're going to look into the data structure and the crucial
algorithms for trees

Applications of tree structures:

Representing data with a natural hierarchical structure

Using trees as data structures to implement other collections: sets,
maps and priority queues (and another sorting algorithm!)
Note: some data has an even more complex network-like structure:
• Communications networks
• Geographical maps (real world, or in computer games)
Family Trees: ancestral tree
6
seniority
Justine
Jeremy
Julie
Julia
John
Jules
James
Jada
Jasmine
Jesse
Jacob
Jenny
Jordan
Jackie
Jesse
Jack
Jenny
Jenna
Jean
Organisational hierarchy
7
seniority
Jane
Jeremy
John
Julia
James
Jasmine
Jada
Julie
Jules
Jacob
Jordan
Jenny
Jesse
Jared
Justin
Jake
Jenna
Jacky
Juan
Joseph
Taxonomy
8
Animals
Reptiles
Mammals
Primates
Tiger
Felines
Leopard
Canines
Lion
Cat
Turtles
Snakes
Lizards
Program Structure
9
private void reportMachineQueues(int tick) {
System.out.printf("%4d: ", tick);
for (Queue<Job> queue : machineQueues) {
if (queue.isEmpty()) System.out.print(" - ");
else System.out.printf("%3s ", queue.peek().getID());
}
System.out.println();
if (verbose)
for (int m=0; m<NumberOfMachines; m++) {
Queue<Job> queue = machineQueues.get(m);
System.out.printf(" M%d: %d jobs: ", m, queue.size());
boolean first = true;
for (Job job : queue) {
if (first) {
System.out.print(job);
first=false;
}
else System.out.printf("\n %s", job);
}
System.out.println();
}
}
Tracing program execution
10
archWall(10, 300, 80, 40)
drawArch
aw(10, 220, 40, 20)
drawArch
drawArch
aw(10,180,20,10)
drawArch
aw(50,220,40,20)
aw(30,180,20,10)
drawArch
aw(50,180,20,10)
drawArch
aw(70,180,20,10)
drawArch
Noughts and Crosses (Tic Tac Toe)
11
X
X
X
X
O
X
OX
X
X
O
X
O
X
O
Decision Tree
12
Tree Terminology
13













A tree is a collection of items in a strict hierarchical structure.
Each item is in a node of the tree.
The root is at the top (!)
Children may be
ordered/unordered
The leaves are at the bottom.
Each node may have child nodes – except a leaf, which has none.
Each node has one parent - except the root, which has none.
An edge joins a node to its parent – may be labelled.
A subtree is a node plus all its descendents.
The depth of a node is its distance from the root.
The height or depth of a tree is the depth of the lowest leaf.
Unique!!
Level = set/list of nodes at the same depth.
Branch = sequence of nodes on a path from root to a leaf.
This is more correctly called a rooted, directed, labelled tree.
Components of Trees
14
A
C
B
E
K
F
G
J
M
Node, root, leaf, child, parent, edge, subtree, depth, height, level, branch,
siblings, ancestors, descendants, cousins, …
Common Constraints on Trees
15

Number of children per node (“arity”)






Ordering constraints:





2: Binary tree
What is a unary tree?
3: Ternary tree
N: N-ary tree (5-ary, 100-ary, …)
Strict N-ary: every non-leaf has exactly N children; otherwise at most N
General Tree: No limit on number of children
Children of a node ordered (List of children).
Children of a node unordered (Set/Bag of children).
Item in each node is less than items in child nodes.
Item at each node is smaller that all items in its left subtree and greater than
all items in its right subtree.
Balancing:


Subtrees are the same height (all leaves are on same level)
Subtrees heights differ by at most one (leaves within one level of each other)
What can you do with a tree?
16

Construct/modify/print it:



Search it:



Add nodes, remove nodes (where?)
Parsing: read a string and turn it into a tree, eg. program, expression
Find a node with a given value/property
Find a path to (or from) a node
Compute some property of the tree or its data:




Find the height, width, arity, …
Sum, max, average, … of values stored
Find a given person’s mother, or all of their grandchildren
Find the manager with the most (direct/indirect) underlings
Traversing trees
17

Many tree algorithms involve doing something at each node in a tree
Different algorithms require nodes to be visited in different orders

Breadth-first/level-order:


Visit nodes in order of increasing depth



Root, then all nodes with depth 1, all with depth 2, …
May be in specified order within each level
Depth-first:



Visit one child and all of its descendants before its siblings
May visit root before, after or between its children
May visit children in specified order
Trees and Recursion
18

Recursively defined data structure:
A tree is a node, along with a set/list of subtrees (empty for leaf)
 Can a tree be empty?



Recursion is very natural for trees – important!
If you don’t use recursion you often need to simulate it
(later)
Binary Trees
19
Each node may have
a left child and/or
a right child
• What’s the maximum number of
nodes in a binary tree of height k ?
• What’s the minimim height of a binary
tree with n nodes?
Representing tree data in Java
20

What kind of data structure can we use to represent a tree?
G

Linked Structures, just like Linked List Nodes:
Binary Tree Nodes:
General Tree Nodes
G
K
G
T
K
M
K

Arrays ?!
 we'll
M
come to this later on...
M
Z
A