Trees - PowerPoint PPT Presentation

1 / 72
About This Presentation
Title:

Trees

Description:

Each node is either a leaf or an internal node ... How about coffee? On expense account? Starbucks. Spike's. Al Forno. Caf Paragon. Yes ... – PowerPoint PPT presentation

Number of Views:18
Avg rating:3.0/5.0
Slides: 73
Provided by: MikeS119
Category:

less

Transcript and Presenter's Notes

Title: Trees


1
Trees
  • most slides taken from Mike Scott, UT Austin

2
Definitions
  • 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
3
Formal 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
4
Properties 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
5
More 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

6
Tree Visualization
7
Tree 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))

8
Tree 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
9
Binary 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
10
Full Binary Tree
  • full binary tree a binary tree is which each
    node was exactly 2 or 0 children

11
Complete 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

12
Perfect 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

13
A 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)
14
Binary 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.

15
Results 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
16
Tree Traversals
17
Recursive 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)

18
Example 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
19
Implementation 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
20
Implementation 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
21
Binary Search Trees
22
Linked 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)

23
Binary 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
24
Implementation 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
25
Performance 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

26
Sample 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.)
27
Worst 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

28
Properties 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

29
More 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
30
Add an Element, Recursive
31
Add an Element, Iterative
32
Remove an Element
  • Three cases
  • node is a leaf, 0 children (easy)
  • node has 1 child (easy)
  • node has 2 children (interesting)

33
Red Black Trees
34
Binary 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?

35
Red 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

36
Paths to Single or Zero Child Nodes
  • How many?

19
35
12
21
16
56
37
Red 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)

38
Example 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
39
Red Black Tree?
19
35
12
50
0
75
-10
135
-5
100
-8
-6
80
40
Red Black Tree?
19
35
12
16
Perfect?Full? Complete?
41
Implications 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?

42
Properties 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

43
Max Height Red Black Tree
14
35
12
21
13
56
43
99
100
44
Maintaining 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

45
Insertions 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
46
Case 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?

47
Case 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
48
Fixing 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.
49
Single Rotation
P
G
X
C
A
B
S
E
D
Apparent rule violation?
50
Case 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
51
After Double Rotation
X
G
P
C
A
B
S
E
D
Apparent rule violation?
52
Case 3 Sibling is Red, not Black
G
S
P
D
E
C
B
A
Any problems?
53
Fixing 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
54
More 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

55
Example of Inserting Sorted Numbers
  • 1 2 3 4 5 6 7 8 9 10

Insert 1. A leaf so red. Realize it is root so
recolor to black.
56
Insert 2
make 2 red. Parent is black so done.
57
Insert 3
Insert 3. Parent is red. Parent's sibling is
black(null) 3 is outside relative to
grandparent. Rotate parent and grandparent
58
Insert 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.
59
Insert 5
5's parent is red.Parent's sibling isblack
(null). 5 isoutside relative tograndparent (3)
so rotateparent and grandparent thenrecolor
60
Finish insert of 5
61
Insert 6
On way down see4 with 2 redchildren. Make4 red
and childrenblack. 4's parent isblack so no
problem.
62
Finishing insert of 6
6's parent is blackso done.
63
Insert 7
7's parent is red.Parent's sibling isblack
(null). 7 isoutside relative tograndparent (5)
so rotate parent and grandparent then recolor
64
Finish insert of 7
65
Insert 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.
66
Still Inserting 8
Recolored nowneed torotate
67
Finish inserting 8
Recolored nowneed torotate
68
Insert 9
On way down see 4 has two red childrenso recolor
4 red and children black. Realize 4 is the root
so recolor black
69
Finish Inserting 9
After rotations and recoloring
70
Insert 10
On way down see 8 has twored children so change
8 tored and children black
71
Insert 11
Again a rotation isneeded.
72
Finish inserting 11
Write a Comment
User Comments (0)
About PowerShow.com