Binary Tree and General Tree - PowerPoint PPT Presentation

About This Presentation
Title:

Binary Tree and General Tree

Description:

Title: Chapter 9 Last modified by: Abdalrahman Document presentation format: Custom Other titles: Arial Lucida Sans Unicode StarSymbol Symbol Times New Roman Default ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 84
Provided by: philadelp2
Category:

less

Transcript and Presenter's Notes

Title: Binary Tree and General Tree


1
Chapter 9
  • Binary Tree and General Tree

2
Overview
  • Two-way decision making is one of the fundamental
    concepts in computing.
  • A binary tree models two-way decisions.
  • A hierarchy represents multi-way choices.
  • The general tree is an extension of the binary
    tree.

3
Learning Objectives
  • Describe a binary tree in terms of its structure
    and components, and learn recursive definitions
    of the binary tree and its properties.
  • Study standard tree traversals in depth.
  • Develop a binary tree class interface based on
    its recursive definition.
  • Learn about the signature of a binary tree and
    understand how to build a binary tree given its
    signature.

4
Learning Objectives
  • Understand Huffman coding, a binary tree-based
    text compression application, and use the binary
    tree class to implement Huffman coding.
  • Implement the binary tree class.
  • Study how tree traversals may be implemented
    non-recursively using a stack.
  • Describe the properties of a general tree.

5
Learning Objectives
  • Learn the natural correspondence of a general
    tree with an equivalent binary tree, and the
    signature of a general tree.

6
9.1.1 Components
7
9.1.1 Components
  • A binary tree consists of nodes and branches.
  • A node is a place in the tree where data is
    stored.
  • There is a special node called the root.
  • starting point of the tree.
  • The nodes are connected to each other by links or
    branches.
  • A left branch or right branch.
  • Binary means that there are at most two choices.
  • A node is said to have at most two children.
  • A node that does not have any children is called
    a leaf.
  • Non-leaf nodes are called internal nodes.

8
9.1.1 Components
  • There is a single path from any node to any other
    node in the tree.

9
9.1.2 Position as Meaning
  • If-then-else tree
  • Represents an if-then-else construct in a
    program.
  • Every node in this tree is conditional expression
    that evaluates to yes or no.
  • If it evaluates to yes, the left branch (if any)
    is taken and if evaluates to no, the right branch
    (if any) is taken.

10
9.1.2 Position as Meaning
  • Expression tree
  • (f ((a b) - c))

Double-click to add graphics
11
Create Expression tree
  • 1- If the current token is a '(', add a new node
    as the left child of the current node, and
    descend to the left child.
  • 2- If the current token is in the
    list '','-','/','', set the root value of the
    current node to the operator represented by the
    current token. Add a new node as the right child
    of the current node and descend to the right
    child.
  • 3- If the current token is a number, set the root
    value of the current node to the number and
    return to the parent.
  • 4- If the current token is a ')', go to the
    parent of the current node.

12
  • lets look at an example of the rules outlined
    above in action. We will use the
    expression (3(45)).
  • We will parse this expression into the following
    list of character tokens'(', '3', '', '(', '4',
    '', '5' ,')',')'.
  • Initially we will start out with a parse tree
    that consists of root node.

13
(3(45))
14
9.1.3 Structure
  • Structure
  • Two trees with the same number of nodes may not
    have the same structure.

15
9.1.3 Structure
  • Depth is the distance from the root.
  • Nodes at the same depth are said to be at the
    same level, with the root being at level zero.
  • The height of a tree is the maximum level (or
    depth) at which there is a node.

16
9.1.3 Structure
  • Full Binary Tree A binary tree in which all of
    the leaves are on the same level and every
    nonleaf node has two children

17
9.1.3 Structure
  • (a), first three are strictly binary, but the
    fourth is not. first two are FULL binary tree
  • (b), first two are complete and the last two are
    not.
  • At level i, there can be at most 2i nodes.
  • Maximum number of nodes over all the levels.

18
9.1.4 Recursive Definitions
19
9.1.4 Recursive Definitions
20
Traversal Definitions
  • Preorder traversal Visit the root, visit the
    left subtree, visit the right subtree
  • Inorder traversal Visit the left subtree, visit
    the root, visit the right subtree
  • Postorder traversal Visit the left subtree,
    visit the right subtree, visit the root

21
Visualizing Binary Tree Traversals
22
Three Binary Tree Traversals
23
9.2 Binary Tree Traversals
24
9.2 Binary Tree Traversals
25
  • Binary Search Tree

26
Overview
  • A binary tree possesses ordering property that
    maintains the data in its nodes in sorted order.
  • Since the search tree is a linked structure,
    entries may be inserted and deleted without
    having to move other entries over, unlike ordered
    lists in which insertions and deletions require
    data movement.
  • The AVL tree is a height-balanced binary search
    tree that delivers guaranteed worst-case search,
    insert, and delete times that are all O(log n)

27
Learning Objectives
  • Explore the motivation for binary search trees by
    learning about the comparison tree for binary
    search.
  • Use the comparison tree as an analytical tool to
    determine the running time of binary search.
  • Describe the binary search tree structure and
    properties.
  • Study the primary binary search tree operations
    of search, insert, and delete, and analyze their
    running times.

28
Learning Objectives
  • Understand a binary search tree class interface
    and use it in application examples.
  • Implement the binary search tree class with a
    binary tree class as the reused storage
    component.
  • Study the AVL tree structure properties, the
    search, insert, and delete operations, and their
    running times.

29
10.2 Binary Search Tree Properties
30
10.2 Binary Search Tree Properties
  • All three trees have the same set of keys.
  • Their structures are different, depending on the
    sequence of insertion or deletion.

31
10.3 Binary Search Tree Operations
  • Three foundational operations
  • Search
  • Insert
  • Delete

32
10.3.1 Search
  • The tree nodes are for real.
  • The target key is compared against the key at the
    root of the tree.
  • If they are equal, sucess.
  • If not, recusively search the appropriate child.
  • Search terminates with failure if an empty
    subtree is reached.

33
10.3.1 Search
34
10.3.2 Insert
  • To insert a value, search must force a failure.
  • Item in inserted in the failed location.
  • A newly inserted node always becomes a leaf node
    in the search tree.

35
10.3.2 Insert
36
10.3.3 Delete
  • The value to be deleted is first located in the
    binary search tree.
  • Three possible cases.
  • Case a X is a leaf node.

37
10.3.3 Delete
  • Case b X has one child
  • Replace the deleted node with the child.

38
10.3.3 Delete
  • Case c X has two children
  • Find the inorder predecessor, Y, of X.
  • Copy the entry at Y into X.
  • Apply deletion on Y.
  • Applying deletion on Y will revert to either case
    b or a since Y is guaranteed to not have a right
    subtree.

39
Running Times
  • Search worst case
  • Tied to the worst possible shape a tree can
    attain.
  • Such a tree degenerates into sequential search.
  • O(n).

40
Running Times
41
Running Times
  • Insertion worst case
  • O(n)
  • Deletion worst case
  • O(n)

42
Balancing
  • Keeping a binary search tree balanced allows the
    height never to exceed O(log n).
  • There are two popular ways of maintaining and
    constructing balanced binary search trees.
  • AVL tree.
  • red-black tree.

43
10.4 A BinarySearchTree Class
44
10.4 A BinarySearchTree Class
45
10.5.1 Example Treesort
  • inOrder traversal method invokes visitor.visit()
    when a node is visited.

46
10.5.1 Example Treesort
47
10.5.2 Example Counting Keys
  • Count the number of keys in a binary search tree
    that are less than a given key.
  • It is possible to simply examine every node of
    the tree.

48
10.6 BinarySearchTree Class Implementation
49
10.6 BinarySearchTree Class Implementation
50
10.6.1 Search Implementation
51
10.6.2 Insert Implementation
52
10.6.2 Insert Implementation
53
10.6.2 Insert Implementation
54
10.6.2 Insert Implementation
  • left, right, and parent fields are directly
    accessed, instead of calling attachLeft and
    attachRight.
  • Clients of BinaryTree that are not in its package
    are required to use attachLeft or attachRight.

55
10.6.3 Delete Implementation
  • findPredecessor helper method.
  • Case c requires finding the inorder predeccessor.

56
10.6.3 Delete Implementation
  • deleteHere helper method.

57
10.6.3 Delete Implementation
58
10.6.3 Delete Implementation
59
10.6.3 Delete Implementation
60
10.6.4 Convenience Methods and Traversals
  • minValue needs to find the "leftmost" node.
  • maxValue finds the "rightmost".

61
10.6.4 Convenience Methods and Traversals
62
10.6.4 Convenience Methods and Traversals
  • This implementation hides the tree structure from
    its clients.
  • All clients need to see are the search, insert,
    and delete operation.
  • "preorder", "inorder", and "postorder" provide a
    small window into the implementation structure.

63
10.9 Summary
  • A comparison tree for binary search on an array
    is a binary tree that depicts all possible search
    paths.
  • A failure node in a comparison tree catches a
    range of values that lie between its inorder
    predecessor and its in order successor in the
    tree.
  • A comparison tree is simply a conceptual tool to
    analyze the time taken by binary search, and is
    therefore often referred to as an implicit search
    tree.

64
10.9 Summary
  • The shape of the comparison tree is independent
    of the data entries in the array it only depends
    on the length of the array.
  • The worst-case number of comparisons for a
    successful search in 2h-1, and for unsuccessful
    search is 2h.
  • Binary search on an ordered array is O(log n).
  • A binary search tree is a binary tree whose
    entries are arranged in order.

65
10.9 Summary
  • An inorder traversal of a binary search tree will
    visit the nodes in ascending order of values.
  • The values stored in a binary search tree must
    lend themselves to being arranged in order.
  • For any given number of values, n, there is only
    one binary search comparison tree. There are many
    binary search trees possible as there are
    different binary trees that can be constructed
    out of n nodes.

66
10.9 Summary
  • The worst possible binary tree structure is one
    that is completely skewed either to the left or
    right O(n).
  • The worst-case running times for search, insert,
    and delete in a balanced binary search tree are
    all O(log n).
  • Treesort is an algorithm to sort a set of values
    by inserting them one by one into a binary search
    tree, and then visiting them in inorder sequence
    -- O(n2).

67
10.9 Summary
  • The AVL tree and red-black tree are two of the
    many types of balanced binary search trees that
    guarantee a worst case search / insert / delete
    time of O(log n).
  • An AVL tree is a binary search tree in which the
    heights of the left and right subtrees of every
    node differ by at most 1.
  • Recursive definition An AVL tree is a binary
    search tree in which the left and right subtrees
    of the root are AVL trees whose heights differ by
    at most 1.

68
10.9 Summary
  • Rotation about a link in an AVL tree takes O(1)
    time.
  • Insertion in an AVL tree starts with a regular
    binary search tree insertion, followed by
    rebalancing.
  • Deletion in an AVL tree starts with a regular
    binary search tree deletion, followed by
    rebalancing.

69
9.3 A Binary Tree Class
70
9.3 A Binary Tree Class
71
9.3 A Binary Tree Class

72
9.3 A Binary Tree Class
73
9.3 A Binary Tree Class
  • Delete a single node from a tree.

74
9.3 A Binary Tree Class
  • Recursive traversal procedures.

75
9.3 A Binary Tree Class
  • Running times of methods
  • makeRoot, setData, and getData involve reading or
    writing data once.
  • Checking for whether the pointer is null.
  • isEmpty O(1).
  • clear simply have to set the root pointer to
    null.
  • O(1)
  • attachLeft and attachRight
  • Three pointer settings O(1)
  • detachLeft and detachRight O(1)

76
9.3 A Binary Tree Class
  • Root called on a leaf node that is at the
    greatest possible depth in the tree.
  • O(h) h is the height of the tree.
  • The height could be as much as n 1 in the case
    where the tree is entirely lopsided.
  • O(n)

77
9.9 Summary
  • Binary trees model two-way decision making
    systems.
  • A binary tree consists of nodes and branches.
  • There is a special node called the root.
  • Every node in a binary tree has at most two
    children.
  • Nodes that have no children are called leaf
    nodes, others are called internal nodes.

78
9.9 Summary
  • There is a single path between any pair of nodes
    in a binary tree.
  • A binary tree is defined by the relative
    positions of the data in its nodes, and the tree
    as a whole carries a meaning that would change if
    the relative positions of the data in the tree
    were to change.
  • The depth of a node in a binary tree is the
    number of branches (distance) from the root to
    that node.

79
9.9 Summary
  • Nodes at the same depth in a binary level are
    said to be at the same level.
  • The height of a binary tree is the maximum level
    at which there is a node.
  • A strictly binary tree is one in which every node
    has either no child or two children.
  • In a complete binary tree, every level but the
    last must have the maximum number of nodes
    possible at that level.

80
9.9 Summary
  • The maximum possible number of nodes at level i
    in a binary tree is 2i.
  • The maximum possible number of nodes in a binary
    tree of height h is 2h1 1.
  • If Nmax is the maximum number of nodes in a
    binary tree, its height is log(Nmax 1) 1.
  • Recursive definition A binary tree is either
    empty, or it consists of a special node called
    root that has a left subtree and a right subtree
    that are mutually disjoint binary trees.

81
9.9 Summary
  • The number of nodes in an empty binary tree is
    zero.
  • Otherwise, the number of nodes is one plus the
    number of nodes each in the left and right
    subtrees of the root.
  • The height of an empty binary tree is -1.
  • Otherwise, the height is one plus the maximum of
    the heights of the left and right subtrees of the
    root.

82
9.9 Summary
  • Recursive definition of inorder traversal type T
    first recursively traverse the Left subtree of
    T, then Visit the root of T, then recursively
    traverse the Right subtree of T.
  • Recursive definition of preorder traversal of
    tree T first Visit the root of T, then
    recursively traverse the Left subtree of T, then
    recursively traverse the Right subtree of T.

83
9.9 Summary
  • Recursive definition of postorder traversal of
    treeT first recursively traverse the Left
    subtree of T, then recursively traverse the Right
    subtree of T, then Visit the root of T.
  • The recursive traversals may be written in short
    form as follows inorder is LVR, preorder is
    VLR, and postorder is LRV.
  • Level-order traversal of treeT starting at the
    root level, go level by level in T, visiting the
    nodes at any level in left to right order.
Write a Comment
User Comments (0)
About PowerShow.com