14
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 1 AVL Trees 6 3 8 4 v z Presentation for use with the textbook Data Structures and Algorithms in Java, 6 th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014

Balanced Binary Search Trees · 2016. 12. 1. · AVL trees are balanced An AVL Tree is a binary search tree such that for every internal node v of T, the heights of the children of

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 1

    AVL Trees

    6

    3 8

    4

    v

    z

    Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 2

    AVL Tree Definition

    AVL trees are

    balanced

    An AVL Tree is a

    binary search tree

    such that for

    every internal

    node v of T, the

    heights of the

    children of v can

    differ by at most 1

    88

    44

    17 78

    32 50

    48 62

    2

    4

    1

    1

    2

    3

    1

    1

    An example of an AVL tree where the

    heights are shown next to the nodes

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 3

    Height of an AVL TreeFact: The height of an AVL tree storing n keys is O(log n).

    Proof (by induction): Let us bound n(h): the minimum number of internal nodes of an AVL tree of height h.

    We easily see that n(1) = 1 and n(2) = 2

    For n > 2, an AVL tree of height h contains the root node, one AVL subtree of height n-1 and another of height n-2.

    That is, n(h) = 1 + n(h-1) + n(h-2)

    Knowing n(h-1) > n(h-2), we get n(h) > 2n(h-2). Son(h) > 2n(h-2), n(h) > 4n(h-4), n(h) > 8n(n-6), … (by induction),

    n(h) > 2in(h-2i)

    Solving the base case we get: n(h) > 2 h/2-1

    Taking logarithms: h < 2log n(h) +2

    Thus the height of an AVL tree is O(log n)

    3

    4 n(1)

    n(2)

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 4

    InsertionInsertion is as in a binary search treeAlways done by expanding an external node.Example:

    44

    17 78

    32 50 88

    48 62

    54w

    b=x

    a=y

    c=z

    44

    17 78

    32 50 88

    48 62

    before insertion

    after insertion

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 5

    Trinode RestructuringLet (a,b,c) be the inorder listing of x, y, z

    Perform the rotations needed to make b the topmost node of the three

    b=y

    a=z

    c=x

    T0

    T1

    T2 T3

    b=y

    a=z c=x

    T0 T1 T2 T3

    c=y

    b=x

    a=z

    T0

    T1 T2

    T3b=x

    c=ya=z

    T0 T1 T2 T3

    Double rotation around c and a

    Single rotation around b

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 6

    Insertion Example, continued

    88

    44

    17 78

    32 50

    48 62

    2

    5

    1

    1

    3

    4

    2

    1

    54

    1

    T0T2

    T3

    x

    y

    z

    2

    3

    4

    5

    6

    7

    1

    88

    44

    17

    7832 50

    48

    622

    4

    1

    1

    2 2

    3

    1

    54

    1

    T0 T1

    T2

    T3

    x

    y z

    unbalanced...

    ...balanced

    1

    2

    3

    4

    5

    6

    7

    T1

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 7

    Restructuring (as Single Rotations)Single Rotations:

    T0T1

    T2

    T3

    c = xb = y

    a = z

    T0 T1 T2

    T3

    c = x

    b = y

    a = zsingle rotation

    T3T2

    T1

    T0

    a = x

    b = y

    c = z

    T0T1T2

    T3

    a = xb = y

    c = zsingle rotation

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 8

    Restructuring (as Double Rotations)double rotations:

    double rotationa = z

    b = x

    c = y

    T0T2

    T1

    T3 T0

    T2T3T1

    a = zb = x

    c = y

    double rotationc = z

    b = xa = y

    T0T2

    T1

    T3 T0

    T2T3 T1

    c = zb = x

    a = y

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 9

    RemovalRemoval begins as in a binary search tree, which means the node removed will become an empty external node. Its parent, w, may cause an imbalance.Example:

    44

    17

    7832 50

    8848

    62

    54

    44

    17

    7850

    8848

    62

    54

    before deletion of 32 after deletion

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 10

    Rebalancing after a RemovalLet z be the first unbalanced node encountered while travelling up the tree from w. Also, let y be the child of z with the larger height, and let x be the child of y with the larger height

    We perform a trinode restructuring to restore balance at z

    As this restructuring may upset the balance of another node higher in the tree, we must continue checking for balance until the root of T is reached

    44

    17

    7850

    8848

    62

    54

    w

    c=x

    b=y

    a=z

    44

    17

    78

    50 88

    48

    62

    54

  • © 2014 Goodrich, Tamassia, Goldwasser AVL Trees 11

    AVL Tree PerformanceAVL tree storing n items

    The data structure uses O(n) space

    A single restructuring takes O(1) time

    using a linked-structure binary tree

    Searching takes O(log n) time

    height of tree is O(log n), no restructures needed

    Insertion takes O(log n) time

    initial find is O(log n)

    restructuring up the tree, maintaining heights is O(log n)

    Removal takes O(log n) time

    initial find is O(log n)

    restructuring up the tree, maintaining heights is O(log n)

  • © 2014 Goodrich, Tamassia, Goldwasser

    Java Implementation

    AVL Trees 12

  • © 2014 Goodrich, Tamassia, Goldwasser

    Java Implementation, 2

    AVL Trees 13

  • © 2014 Goodrich, Tamassia, Goldwasser

    Java Implementation, 3

    AVL Trees 14