360 likes | 633 Views
1. Main Index. Contents. Week 6 – Binary Trees. Sequence and Associative Containers. Sequence containers access data by position Array (index) Vector (index) List (iterator) Associate containers can access data by value Set and Map / Binary search tree. Arrays Vectors.
E N D
1 Main Index Contents Week 6 – Binary Trees
Sequence and Associative Containers • Sequence containers access data by position • Array (index) • Vector (index) • List (iterator) • Associate containers can access data by value • Set and Map / Binary search tree Arrays Vectors Linked lists Trees
Tree in our life • Need to turn it upside down
Tree in Computer Science • Similar to tree in nature Root Leaves
6 Main Index Contents Tree Structures Root Parent Child Edge Leaf Interior node Subtree Level Depth = max level
8 Main Index Contents Tree Node Level and Path Length What is the Depth?
Binary Tree Definition • A binary tree T is a finite set of nodes with one of the following properties: • (a) T is a tree if the set of nodes is empty. (An empty tree is a tree, size=0.) • (b) The set consists of a root, R, and exactly two distinct binary trees, the left subtree TL and the right subtree TR. The nodes in T consist of node R and all the nodes in TL and TR. • Any node in a binary tree has at most two children
10 Main Index Contents Selected Samples of Binary Trees Does tree B have left subtree TL?
Density of a Binary Tree • Intuitively, density is a measure of the size of a tree (number of nodes) relative to the depth of the tree. • Trees with a higher density are important as data structures, because they can “pack” more nodes near the root. • Access to the nodes is along relatively short paths from the root.
Degenerate tree • A degenerate (or pathological) tree is where each parent node has only one associated child node. This means that performance-wise, the tree will behave like a linked list data structure.
Evaluating Tree Density • Complete binary trees are an ideal storage structure, because of their ability to pack a large number of nodes near the root • Assume we want to store n elements in a complete binary tree. We would like to know the depthd of such a tree.
Depth d--- Size n in complete binary tree 20 = 1 nodes 21 = 2 nodes Geometric series level d has 2d nodes … … … ………………… -1
17 Main Index Contents Binary Tree Nodes
Node class template <typename T> { public: T nodeValue; tnode<T> *left, *right; tnode() {} tnode(const T& item, tnode<T> *lptr=NULL, tnode<T> *rptr=NULL):nodeValue(item), left(lptr), right(rptr) {} };
Building a Binary Tree • A binary tree consists of a collection of dynamically allocated tnode objects whose pointer values specify links to their children.
Recursion • Solution to a problem depends on solutions to smaller instances of the same problem. • As a tree is a self-referential (recursively defined) data structure, traversal can naturally be described by recursion. • Recursive function: a function that calls itself.
BINARY TREE SCAN ALGORITHMS • How to traverse the tree so that each node is visited exactly once? 1. Depth-first • Pre-order • In-order • Post-order 2. Breadth-first (level-order)
Depth-first • Defined as operations recursively at each node. • The actions include: • visiting the node and performing some task (N), • making a recursive descent to the left subtree (L), • making a recursive descent to the right subtree (R). • The different scanning strategies depend on the order in which we perform the tasks.
In-order Scan • The prefix “in” comes from the fact that the visit occurs between the descents into the two subtrees. • In this example, we use the order LNR. 1. Traverse the left subtree (“go left”). 2. Visit the node. 3. Traverse the right subtree (“go right”). N R L Recursively!
In-order example L N R L N R L N R L N R N R L Recursively! In-order scan: B, D, A, E, C
Post-order scan • 1. Traverse the left subtree (“go left”). • 2. Traverse the right subtree (“go right”). • 3. Visit the node. D, B, E, C, A 3. 2. 1.
Pre-order scan 1. Visit the node. 2. Traverse the left subtree (“go left”). 3. Traverse the right subtree (“go right”). 1. A, B, D, C, E 3. 2.
Example Question F B G A D I C E H Pre-order? In-order? Post-order? Level-order ?
Computing the Leaf Count Pre-order scan
Computing the Depth of a Tree Post-order scan
Deleting Tree Nodes Post-order scan
Reading • Chapter 4