Download presentation
Presentation is loading. Please wait.
1
Trees
2
2 Definition of a tree A tree is a node with a value and zero or more children Depending on the needs of the program, the children may or may not be ordered A tree has a root, internal nodes, and leaves Each node contains an element and has branches leading to other nodes (its children) Each node (other than the root) has a parent Each node has a depth (distance from the root) A CBDE GFHJKI LMN
3
3 More definitions An empty tree has no nodes The descendents of a node are its children and the descendents of its children The ancestors of a node are its parent (if any) and the ancestors of its parent The subtree rooted at a node consists of the given node and all its descendents An ordered tree is one in which the order of the children is important; an unordered tree is one in which the children of a node can be thought of as a set The branching factor of a node is the number of children it has The branching factor of a tree is the average branching factor of its nodes
4
4 Data structure for a tree Each node in a tree has an arbitrary number of children, so we need something that will hold an arbitrary number of nodes, such as an ArrayList class Tree { V value; ArrayList children; } If we don’t care about the order of children, we might use a Set instead of a ArrayList
5
5 ADT for a tree It must be possible to: Construct a new tree If a tree can be empty, this may require a header node Add a child to a node Get (iterate through) the children of a node Access (get and set) the value in a node It should probably be possible to: Remove a child (and the subtree rooted at that child) Get the parent of a node
6
6 File systems File systems are almost always implemented as a tree structure The nodes in the tree are of (at least) two types: folders (or directories), and plain files A folder typically has children—subfolders and plain files A folder also contains a link to its parent—in both Windows and UNIX, this link is denoted by.. In UNIX, the root of the tree is denoted by / A plain file is typically a leaf
7
7 Family trees It turns out that a tree is not a good way to represent a family tree Every child has two parents, a mother and a father Parents frequently remarry An “upside down” binary tree almost works Since it is a biological fact (so far) that every child has exactly two parents, we can use left child = father and right child = mother The terminology gets a bit confusing If you could go back far enough, it becomes a mathematical certainty that the mother and father have some ancestors in common
8
8 Part of a genealogy Isaac David Paul a Steven Danielle Winfred Carol Chester Elaine Eugene Pauline
9
9 Game trees Trees are used heavily in implementing games, particularly board games A node represents a position on the board The children of a node represent all the possible moves from that position More precisely, the branches from a node represent the possible moves; the children represent the new positions Planning ahead (in a game) means choosing a path through the tree However— You can’t have a cycle in a tree If you can return to a previous position in a game, you have a cycle Graphs can have cycles
10
10 Trees for expressions and statements Examples: The expression x > y ? x : y ?: >x x y y The statement if (x > y) max = x; else max = y; y if > xxy max ==
11
11 More trees for statements while (n >= 1) { exp = x * exp; n--; } for (int i = 0; i < n; i++) a[i] = 0; while >= n1 exp * = n -- x ; for i int = 0 a [ ]i i n0 ++=< i
12
12 The End
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.