A tree is a pair $(r,s)$ where $r$ is a decoration (called the root), and $s$ is a sequence (or set) of trees (called the children).
A tree can also be seen as a particular graph, but the inductive definition is much better for computing.
Show concepts on images below: child, parent, sibling, ancestor, descendant.
Show concepts on images below: branch, leaf, root, terminal, level depth, height.
A binary tree is either a singular value called a leaf (or null, nil, 0, empty ...) or a triple $(d,l,r)$ called a branch where $d$ is a decoration (root) and $l$ and $r$ are binary trees (left and right child).
Some textbook have slightly different definitions, but they are not as convenient for programming/algorithms.
Watch out level and height.
Concepts: full (0/2 children), complete (filled by lines), perfect (all leaves same depth), m-ary ($m$ children).
Assume a tree of integers. Add together all the decorations. Develop code during the lecture.
For each branch $(d,l,r)$, all the decorations in $l$ are smaller than $d$ and all the decorations in $r$ are bigger than $d$.
Assume a tree of names. Tell whether a name is in the tree (spell checker). Sketch algorithm during the lecture.
Search/insert, delete (cases: leaf, 1 child, leftmost of $r$, rightmost of $l$).
Show program/algorithm during the lecture.
Definition: A node is a question. An edge is an answer.
Application: There are 9 equal-looking coins, but one is lighter (the coin maker replaced gold with silver).
Problem: Find the different coin with a pan balance.
Discuss complexity and optimality of solution.
Sorting can be seen as a decision tree.
Discuss during the lecture the decision tree for finding the minimum of 3 numbers.
Map characters to bit strings so that more frequent characters are mapped to shorter strings.
Example:Discuss example during the lecture: aabbacdaab = 11010110010001101, 17 vs 20 bits.
Char Freq Bits a 0.5 1 b 0.3 01 c 0.15 001 d 0.05 000
Show construction during the lecture: repeatedly join in a branch the two subtrees with lowest frequency, label arcs consistently with 0/1.
Preorder, Postorder, Inorder (only for binary).
List all the nodes of a tree in some specified order.
Define and show on some binary tree about during the lecture.
Tree representation of expressions, e.g., $(2+3)*4+5$.
Define construction of tree representation during the lecture.
Polish notation of expressions, evaluation.
Define and show both the notation and the evaluation during the lecture.
See unit about graphs.