2.72
; Consider the encoding procedure that you designed in Exercise 2.68. What is the
; order of growth in the number of steps needed to encode a symbol? Be sure to
; include the number of steps needed to search the symbol list at each node
; encountered. To answer this question in general is difficult. Consider the
; special case where the relative frequencies of the n symbols are as described
; in Exercise 2.71, and give the order of growth (as a function of n) of the number
; of steps needed to encode the most frequent and least frequent symbols in the
; alphabet.
; ==================================================================
; Source: http://community.schemewiki.org/?sicp-ex-2.72
; ==================================================================
; For the encode-symbol procedure in 2.68:
; Search the symbol list at each node: O(n) time
; Then take log_n branches
; Total: O(n * log_n)
; For the special case described in 2.71:
; 1. Encoding the most frequent symbol:
; Search through symbol list: O(n) time
; Take the first single branch, since it will be at the top of the list: constant
; Total: O(n)
; 2. Encoding the least frequent symbol:
; Search through symbol list at each level: O(n) time
; Take the next branch, since we are only removing one node, it would be: O(n - 1)
; Total: O(n * (n - 1)), or O(n^2)