Title: Trees
1Trees
- most slides taken from Mike Scott, UT Austin
2Definitions
- A tree is a data structure accessed beginning at
a root node - Each node is either a leaf or an internal node
- An internal node has 1 or more children, nodes
that can be reached directly from that internal
node. - The internal node is said to be the parent of its
child nodes
root node
internalnodes
leaf nodes
3Formal Definition of a Tree
- A tree is either
- empty (no nodes) or
- a root connected to 0 or more trees (called sub
trees)
root
sub tree A
sub tree B
sub tree B
4Properties of Trees and Nodes
root
- siblings two nodes that have the same parent
- edge the link from one node to another
- path length the number of edges that must be
traversed to get from one node to another
edge
siblings
path length from root to thisnode is 3
5More Properties of Trees
- depth the path length from the root of the tree
to this node - height of a node The maximum distance (path
length) of any leaf from this node - a leaf has a height of 0
- the height of a tree is the height of the root of
that tree - descendants any nodes that can be reached via 1
or more edges from this node - ancestors any nodes for which this node is a
descendant
6Tree Visualization
7Tree example Arithmetic Expression Tree
- Binary tree associated with an arithmetic
expression - internal nodes operators
- external nodes operands
- Example arithmetic expression tree for the
expression (2 ? (a - 1) (3 ? b))
8Tree example Decision Tree
- Binary tree associated with a decision process
- internal nodes questions with yes/no answer
- external nodes decisions
- Example dining decision
Want a fast meal?
Yes
No
How about coffee?
On expense account?
Yes
No
Yes
No
Starbucks
Spikes
Al Forno
Café Paragon
9Binary Trees
- There are many variations on trees but we will
work with binary trees - binary tree a tree with at most two children for
each node - the possible children are normally referred to as
the left and right child
parent
right child
left child
10Full Binary Tree
- full binary tree a binary tree is which each
node was exactly 2 or 0 children
11Complete Binary Tree
- complete binary tree a binary tree in which
every level, except possibly the deepest is
completely filled. At depth n, the height of the
tree, all nodes are as far left as possible
12Perfect Binary Tree
- perfect binary tree a binary tree with all leaf
nodes at the same depth. All internal nodes have
exactly two children. - a perfect binary tree has the maximum number of
nodes for a given height - a perfect binary tree has 2(n1) - 1 nodes where
n is the height of a tree - height 0 -gt 1 node
- height 1 -gt 3 nodes
- height 2 -gt 7 nodes
- height 3 -gt 15 nodes
13A Binary Node class
public class BNode private Object
myData private BNode myLeft private BNode
myRight public BNode() public BNode(Object
data, Bnode left, BNode right) public Object
getData() public BNode getLeft() public BNode
getRight() public void setData(Object
data) public void setLeft(BNode left) public
void setRight(BNode right)
14Binary Tree Traversals
- Many algorithms require all nodes of a binary
tree be visited and the contents of each node
processed. - There are 4 traditional types of traversals
- preorder traversal process the root, then
process all sub trees (left to right) - in order traversal process the left sub tree,
process the root, process the right sub tree - post order traversal process the left sub tree,
process the right sub tree, then process the root - level order traversal starting from the root of
a tree, process all nodes at the same depth from
left to right, then proceed to the nodes at the
next depth.
15Results of Traversals
- To determine the results of a traversal on a
given tree draw a path around the tree. - start on the left side of the root and trace
around the tree. The path should stay close to
the tree.
12
pre order process when passdown left side of
node12 49 13 5 42 in order process when
passunderneath node13 49 5 12 42 post order
process when passup right side of node13 5 49
42 12
49
42
13
5
16Tree Traversals
17Recursive methods for
- Preorder
- preorder(v)
- output(v)
- If(v.left!null)
- Preorder(v.left)
- If(v.right!null)
- Preorder(v.right)
- Postorder
- Inorder
- By-level (breadth-first)
18Example Evaluate Arithmetic Expressions
- Specialization of a postorder traversal
- recursive method returning the value of a subtree
- when visiting an internal node, combine the
values of the subtrees
Algorithm evalExpr(v) if v is leaf return
v.getdata () else x ? evalExpr(v.left) y ?
evalExpr(v.right) ? ? operator stored at
v return x ? y
19Implementation 1 Linked Structure for Binary
Trees
- A node is represented by an object storing
- Element
- Parent node
- Left child node
- Right child node
- Node objects implement the Position ADT
?
?
?
B
A
D
?
?
?
?
C
E
20Implementation 2 Array-Based Representation of
Binary Trees
- nodes are stored in an array
1
2
3
- let rank(node) be defined as follows
- rank(root) 1
- if node is the left child of parent(node),
rank(node) 2rank(parent(node)) - if node is the right child of parent(node),
rank(node) 2rank(parent(node))1
6
4
5
7
10
11
21Binary Search Trees
22Linked List Access
- Accessing a item from a linked list takes O(N)
time for an arbitrary element - Binary trees can improve upon this and reduce
access to O( log N ) time for the average case - Expands on the binary search technique and allows
insertions and deletions - Worst case degenerates to O(N) but this can be
avoided by using balanced trees (AVL, Red-Black)
23Binary Search Trees
- A binary tree is a tree where each node has at
most two children, referred to as the left and
right child - A binary search tree is a binary tree where every
node's left subtree holds values less than the
node's value, and every right subtree holds
values greater. - A new node is added as a leaf.
root
parent
17
right child
11
19
left child
24Implementation of Binary Node
public class BSTNode private Comparable
myData private BSTNode myLeft private BSTNode
myRightC public BinaryNode(Comparable
item) myData item public Object
getValue() return myData public
BinaryNode getLeft() return myLeft public
BinaryNode getRight() return
myRight public void setLeft(BSTNode
b) myLeft b // setRight not shown
25Performance of Binary Trees
- For the three core operations (add, access,
remove) a binary search tree (BST) has an average
case performance of O(log N) - Even when using the naïve insertion / removal
algorithms - no checks to maintain balance
- balance achieved based on the randomness of the
data inserted
26Sample Insertion
- 100, 164, 130, 189, 244, 42, 141, 231, 20,
153(from HotBits www.fourmilab.ch/hotbits/)
If you insert 1000 random numbers into a BST
usingthe naïve algorithm what is the expected
height of thetree? (Number of links from root to
deepest leaf.)
27Worst Case Performance
- In the worst case a BST can degenerate into a
singly linked list. - Performance goes to O(N)
- 2 3 5 7 11 13 17
28Properties of a BST
- The minimum value is in the left most node
- The maximum value is in the right most node
- useful when removing an element from the BST
- An inorder traversal of a BST provides the
elements of the BST in ascending order
29More on Implementation
- Many ways to implement BSTs
- Using nodes is just one and even then many
options and choices
public class BinarySearchTree private TreeNode
root private int size public
BinarySearchTree() root null size 0
30Add an Element, Recursive
31Add an Element, Iterative
32Remove an Element
- Three cases
- node is a leaf, 0 children (easy)
- node has 1 child (easy)
- node has 2 children (interesting)
33Red Black Trees
34Binary Search Trees
- Average case and worst case Big O for
- insertion
- deletion
- access
- Balance is important. Unbalanced trees give worse
than log N times for the basic tree operations - Can balance be guaranteed?
35Red Black Trees
- A BST with more complex algorithms to ensure
balance - Each node is labeled as Red or Black.
- Path A unique series of links (edges) traverses
from the root to each node. - The number of edges (links) that must be followed
is the path length - In Red Black trees paths from the root to
elements with 0 or 1 child are of particular
interest
36Paths to Single or Zero Child Nodes
19
35
12
21
16
56
37Red Black Tree Rules
- Every node is colored either Red or black
- The root is black
- If a node is red its children must be black.
(a.k.a. the red rule) - Every path from a node to a null link must
contain the same number of black nodes (a.k.a.
the path rule)
38Example of a Red Black Tree
- The root of a Red Black tree is black
- Every other node in the tree follows these rules
- Rule 3 If a node is Red, all of its children are
Black - Rule 4 The number of Black nodes must be the
same in all paths from the root node to null nodes
19
35
12
21
16
56
30
39Red Black Tree?
19
35
12
50
0
75
-10
135
-5
100
-8
-6
80
40Red Black Tree?
19
35
12
16
Perfect?Full? Complete?
41Implications of the Rules
- If a Red node has any children, it must have two
children and they must be Black. (Why?) - If a Black node has only one child that child
must be a Red leaf. (Why?) - Due to the rules there are limits on how
unbalanced a Red Black tree may become. - on the previous example may we hang a new node
off of the leaf node that contains 0?
42Properties of Red Black Trees
- If a Red Black Tree is complete, with all Black
nodes except for Red leaves at the lowest level
the height will be minimal, log N - To get the max height for N elements there should
be as many Red nodes as possible down one path
and all other nodes are Black - This means the max height would be lt 2 log N
- see example on next slide
43Max Height Red Black Tree
14
35
12
21
13
56
43
99
100
44Maintaining the Red Black Properties in a Tree
- Insertions
- Must maintain rules of Red Black Tree.
- New Node always a leaf
- can't be black or we will violate rule 4
- therefore the new leaf must be red
- If parent is black, done (trivial case)
- if parent red, things get interesting because a
red leaf with a red parent violates rule 3
45Insertions with Red Parent - Child
Must modify tree when insertion would result in
Red Parent - Child pair using color changes
and rotations.
30
70
15
60
20
85
80
90
46Case 1
- Suppose sibling of parent is Black.
- by convention null nodes are black
- In the previous tree, true if we are inserting a
3 or an 8. - What about inserting a 99? Same case?
- Let X be the new leaf Node, P be its Red Parent,
S the Black sibling and G, P's and S's parent and
X's grandparent - What color is G?
47Case 1 - The Picture
G
S
P
D
C
E
B
A
Relative to G, X could be an inside or outside
node.Outside -gt left left or right right
movesInside -gt left right or right left moves
48Fixing the Problem
G
S
P
D
C
E
B
A
If X is an outside node
a single rotation between P and G fixes the
problem.A rotation is an exchange of roles
between a parentand child node. So P becomes G's
parent. Also must recolor P and G.
49Single Rotation
P
G
X
C
A
B
S
E
D
Apparent rule violation?
50Case 2
- What if X is an inside node relative to G?
- a single rotation will not work
- Must perform a double rotation
- rotate X and P
- rotate X and G
G
S
P
D
E
A
C
B
51After Double Rotation
X
G
P
C
A
B
S
E
D
Apparent rule violation?
52Case 3 Sibling is Red, not Black
G
S
P
D
E
C
B
A
Any problems?
53Fixing Tree when S is Red
- Must perform single rotation between parent, P
and grandparent, G, and then make appropriate
color changes
P
G
X
C
S
B
A
E
D
54More on Insert
- Problem What if on the previous example G's
parent had been red? - On the way down the tree, if we see a node X that
has 2 Red children, we make X Red and its two
children black. - if recolor the root, recolor it to black
- the number of black nodes on paths below X
remains unchanged - If X's parent was Red then we have introduced 2
consecutive Red nodes.(violation of rule) - to fix, apply rotations to the tree, same as
inserting node
55Example of Inserting Sorted Numbers
Insert 1. A leaf so red. Realize it is root so
recolor to black.
56Insert 2
make 2 red. Parent is black so done.
57Insert 3
Insert 3. Parent is red. Parent's sibling is
black(null) 3 is outside relative to
grandparent. Rotate parent and grandparent
58Insert 4
On way down see2 with 2 red children.Recolor 2
red andchildren black.Realize 2 is rootso
color back to black
When adding 4parent is blackso done.
59Insert 5
5's parent is red.Parent's sibling isblack
(null). 5 isoutside relative tograndparent (3)
so rotateparent and grandparent thenrecolor
60Finish insert of 5
61Insert 6
On way down see4 with 2 redchildren. Make4 red
and childrenblack. 4's parent isblack so no
problem.
62Finishing insert of 6
6's parent is blackso done.
63Insert 7
7's parent is red.Parent's sibling isblack
(null). 7 isoutside relative tograndparent (5)
so rotate parent and grandparent then recolor
64Finish insert of 7
65Insert 8
On way down see 6with 2 red children.Make 6 red
andchildren black. Thiscreates a
problembecause 6's parent, 4, isalso red. Must
performrotation.
66Still Inserting 8
Recolored nowneed torotate
67Finish inserting 8
Recolored nowneed torotate
68Insert 9
On way down see 4 has two red childrenso recolor
4 red and children black. Realize 4 is the root
so recolor black
69Finish Inserting 9
After rotations and recoloring
70Insert 10
On way down see 8 has twored children so change
8 tored and children black
71Insert 11
Again a rotation isneeded.
72Finish inserting 11