Lecture 7: Binary Trees - II

Lecture 7: Binary Trees - II#

Review#

  • dynamic operations on binary search tree mostly requires O(h) time

  • the minimum h of a tree of n nodes is logn

  • dynamic operations such as insertion may lead to the height of a tree way larger than logn, which then increase operation time

    • the extreme case is that new items are being added in ascending order, the tree will be one long branch off to the right, with height of n

  • this lecture shows how to balance the height of binary tree

Height Balance#

  • how to maintain height h=O(logn) where n is the number of nodes in the tree?

  • a binrayr tree that maintains O(logn) height under dynamic operations is called balanced.

    • many algorithms

    • such as AVL tree

Rotation#

  • need reduce height of tree without changing its traversal order so that we represent the same sequence of items

  • Rotations!

  • A rotation relinks O(1) ppinters to modify tree structure and maintains traversal order

AVL Tree#

  • AVL Trees maintain height-balance

    • A node is height-balanced if heights of its left and right subtrees differ by at most 1

    • let skew of a node be the height of its right subtree minus that of its left subtree

    • then a node is height-balanced if its skew is -1, 0, or 1

Computing Height#

  • how to tell wether a node is height-balanced? compute the height of subtrees!!

  • algorithm

    • recusively compute the height of left subtree and right subtree of node <X>

    • add 1 to the max of the two heights

    • run in O(n) time since we recurse on every node

  • can we improve to O(1)? -> tree augumentation: augument each node with the height of its subtree !!

  • the height of <X> can be computed in O(1) time from the heights of its children

    • look up the stored height of left and right child in O(1)

    • add 1 to the max of the two

  • during dynamic operaiton, the height and other augumentation of each node must be maintained as the tree changes shape

    • update relinked nodes in a rotation operation in O(1) time

    • update all ancestors of an inserted or deleted node in O(h) time by walking up the tree.