Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

65
Chapter 10 Trees and Binary Trees Part 2

Transcript of Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Page 1: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Chapter 10Trees and Binary Trees

Part 2

Page 2: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

?Traversal level by level

Page 3: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Definitions

Page 4: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.
Page 5: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.
Page 6: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Rooted trees with four vertices(Root is at the top of tree.)

Page 7: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Ordered trees with four vertices

Page 8: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Implementations of Ordered Trees

• Multiple links

• first child and next sibling links• Correspondence with binary trees

data child1 Child2 …

data first child Next sibling

Page 9: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.
Page 10: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.
Page 11: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Conversion Conversion

(from forest/Orchard to binary tree(from forest/Orchard to binary tree

Corresponded binary tree respectively

Corresponded binary tree

Page 12: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Huffman Tree(Huffman Tree( 哈夫曼树哈夫曼树 ))

Path Length (Path Length ( 路径长度 路径长度 ))

Path Length of the binary tree Path Length of the binary tree Total length of all from leaves to rootTotal length of all from leaves to root

Page 13: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Weighted Path LengthWeighted Path Length ( (WPL,WPL, 带权路径长度 带权路径长度 ))

树的带权路径长度是树的各叶结点所带的权值树的带权路径长度是树的各叶结点所带的权值与该结点到根的路径长度的乘积的和。与该结点到根的路径长度的乘积的和。

1

0

n

iii lwWPL

Page 14: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

How about the WPLof the following binary trees

Page 15: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Huffman tree

A (extended) binary tree with minimal A (extended) binary tree with minimal WPLWPL 。。

Page 16: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Processes of huffman treeProcesses of huffman tree

Page 17: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Huffman coding Huffman coding

Compression Compression suppose we have a messagesuppose we have a message : : CAST CAST SAT AT A TASACAST CAST SAT AT A TASA alphabet ={ C, A, S, T }alphabet ={ C, A, S, T } ,, frequency of them frequency of them (( 次数次数 ) are ) are WW== { 2, 7, 4, 5 }{ 2, 7, 4, 5 } 。。 first case equal length codingequal length coding AA : 00 T : 10 C : 01 S : 11 : 00 T : 10 C : 01 S : 11Total coding length of the message is Total coding length of the message is ( 2+7+4+5 ) * 2 = 36.( 2+7+4+5 ) * 2 = 36.

Page 18: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

AA : 0 T : 10 C : 110 S : 111 : 0 T : 10 C : 110 S : 111Total length of huffman codingTotal length of huffman coding : :

7*1+5*2+7*1+5*2+( 2+4 )*3 = 35( 2+4 )*3 = 35Which is shorter than that of equal length codingWhich is shorter than that of equal length coding 。。霍夫曼编码是一种无前缀编码。解码时不会混淆。霍夫曼编码是一种无前缀编码。解码时不会混淆。

Huffman tree ??

Page 19: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Binary Search Trees• Can we find an implementation for

ordered lists in which we can search quickly (as with binary search on a contiguous list) and in which we can make insertions and deletions quickly (as with a linked list)?

Page 20: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

DEFINITION• A binary search tree is a binary tree that is either empt

y or in which the data entry of every node has a key and satisfies the conditions:

1. The key of the left child of a node (if it exists) is less than the key of its parent node.

2. The key of the right child of a node (if it exists) is greater than the key of its parent node.

3. The left and right subtrees of the root are again binary search trees.We always require:No two entries in a binary search tree may have equal keys.

Page 21: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

different views• We can regard binary search trees

as a new ADT.• We may regard binary search trees

as a specialization of binary trees.• We may study binary search trees

as a new implementation of the ADT ordered list.

Page 22: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

The Binary Search Tree Class

Page 23: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Recursive auxiliary function:

template <class Record>Binary node<Record> *Search tree<Record> :: search for

node( Binary node<Record>* sub root, const Record &target) const

{if (sub root == NULL || sub root->data == target)return sub root;else if (sub root->data < target)return search for node(sub root->right, target);else return search for node(sub root->left, target);}

Page 24: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Nonrecursive version:template <class Record>Binary node<Record> *Search tree<Record> :: search for

node( Binary node<Record> *sub root, const Record &target) const

{while (sub root != NULL && sub root->data != target)if (sub root->data < target) sub root = sub root->right;else sub root = sub root->left;return sub root;}

Page 25: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Public method for tree search:template <class Record>

Error code Search tree<Record> ::tree search(Record &target) const

{Error code result = success;Binary node<Record> *found = search for node(root, target);if (found == NULL)

result = not present;else

target = found->data;return result;}

Page 26: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Binary Search Trees with the Same Keys

Page 27: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

search

Page 28: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Creating a BST by insertion

Page 29: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

insertion

Page 30: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Method for Insertion

Page 31: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Method for Insertion

Page 32: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Analysis of insertion

Page 33: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Treesort• When a binary search tree is traversed in in

order, the keys will come out in sorted order.

• This is the basis for a sorting method, called treesort: Take the entries to be sorted, use the method insert to build them into a binary search tree, and then use inorder traversal to put them out in order.

Page 34: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Treesort

Page 35: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Comparison First advantage of treesort over quicksort: The

nodes need not all be available at the start of the process, but are built into the tree one by one as they become available.

Second advantage: The search tree remains available for later insertions and removals.

Drawback: If the keys are already sorted, then treesort will be a disasteróthe search tree it builds will reduce to a chain. Treesort should never be used if the keys are already sorted, or are nearly so.

Page 36: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Removal from a Binary Search Tree

Page 37: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Removal from a Binary Search Tree (continue)

Page 38: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Height Balance: AVL TreesDefinition:An AVL tree is a binary search tree in which the heights ofthe left and right subtrees of the root differ by at most 1 andin which the left and right subtrees are again AVL trees.With each node of an AVL tree is associated a balancefactor that is left higher, equal, or right higher according,respectively, as the left subtree has height greater than, equ

alto, or less than that of the right subtree.

Page 39: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Example AVL trees

Page 40: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Example AVL trees

Page 41: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Example non-AVL trees

Page 42: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Example non-AVL trees

Page 43: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Insertions into an AVL tree

Page 44: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Insertions into an AVL tree

Page 45: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Rotations of an AVL Tree

Page 46: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Double Rotation

Page 47: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Deletion with no rotations

Page 48: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Deletion with single left rotations

Page 49: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Deletion with double rotation

Page 50: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Worst-Case AVL Trees

Page 51: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Fibonacci Trees

Page 52: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Analysis of Fibonacci Trees

Page 53: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Analysis of Fibonacci Trees

Page 54: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Multiway Search Trees• An m-way search tree is a tree in

which, for some integer m called the order of the tree, each node has at most m children.

Page 55: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Balanced Multiway Trees (B-Trees)

Page 56: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

B-Tree Example

Page 57: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Insertion into a B-Tree

In contrast to binary search trees, B-trees are not allowed to grow at their leaves; instead, they are forced to grow at the root. General insertion method:

1. Search the tree for the new key. This search (if the key is truly new) will terminate in failure at a leaf.

2. Insert the new key into to the leaf node. If the node was not previously full, then the insertion is finished.

Page 58: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Insertion into a B-Tree3. When a key is added to a full node, then the

node splits into two nodes, side by side on the same level, except that the median key is not put into either of the two new nodes.

4. When a node splits, move up one level, insert the median key into this parent node, and repeat the splitting process if necessary.

5. When a key is added to a full root, then the root splits in two and the median key sent upward becomes a new root. This is the only time when the B-tree grows in height.

Page 59: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Growth of a B-Tree

Page 60: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Growth of a B-Tree

Page 61: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Growth of a B-Tree

Page 62: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Growth of a B-Tree

Page 63: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Deletion from a B-Tree

Page 64: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Deletion from a B-Tree

Page 65: Chapter 10 Trees and Binary Trees Part 2.Traversal level by level.

Deletion from a B-Tree