1 / 83

Chapter 9

Binary Tree and General Tree. Chapter 9. Overview. Two-way decision making is one of the fundamental concepts in computing. A binary tree models two-way decisions. A hierarchy represents multi-way choices. The general tree is an extension of the binary tree. Learning Objectives.

Télécharger la présentation

Chapter 9

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Binary Tree and General Tree Chapter 9

  2. Overview • Two-way decision making is one of the fundamental concepts in computing. • A binary tree models two-way decisions. • A hierarchy represents multi-way choices. • The general tree is an extension of the binary tree.

  3. Learning Objectives • Describe a binary tree in terms of its structure and components, and learn recursive definitions of the binary tree and its properties. • Study standard tree traversals in depth. • Develop a binary tree class interface based on its recursive definition. • Learn about the signature of a binary tree and understand how to build a binary tree given its signature.

  4. Learning Objectives • Understand Huffman coding, a binary tree-based text compression application, and use the binary tree class to implement Huffman coding. • Implement the binary tree class. • Study how tree traversals may be implemented non-recursively using a stack. • Describe the properties of a general tree.

  5. Learning Objectives • Learn the natural correspondence of a general tree with an equivalent binary tree, and the signature of a general tree.

  6. 9.1.1 Components

  7. 9.1.1 Components • A binary tree consists of nodes and branches. • A node is a place in the tree where data is stored. • There is a special node called the root. • “starting point” of the tree. • The nodes are connected to each other by links or branches. • A left branch or right branch. • Binary means that there are at most two choices. • A node is said to have at most two children. • A node that does not have any children is called a leaf. • Non-leaf nodes are called internal nodes.

  8. 9.1.1 Components • There is a single path from any node to any other node in the tree.

  9. 9.1.2 Position as Meaning • If-then-else tree • Represents an if-then-else construct in a program. • Every node in this tree is conditional expression that evaluates to yes or no. • If it evaluates to yes, the left branch (if any) is taken and if evaluates to no, the right branch (if any) is taken.

  10. 9.1.2 Position as Meaning • Expression tree • (f + ((a * b) - c)) Double-click to add graphics

  11. Create Expression tree • 1- If the current token is a '(', add a new node as the left child of the current node, and descend to the left child. • 2- If the current token is in the list ['+','-','/','*'], set the root value of the current node to the operator represented by the current token. Add a new node as the right child of the current node and descend to the right child. • 3- If the current token is a number, set the root value of the current node to the number and return to the parent. • 4- If the current token is a ')', go to the parent of the current node.

  12. let’s look at an example of the rules outlined above in action. We will use the expression (3+(4∗5)). • We will parse this expression into the following list of character tokens['(', '3', '+', '(', '4', '*', '5' ,')',')']. • Initially we will start out with a parse tree that consists of root node.

  13. (3+(4∗5))

  14. 9.1.3 Structure • Structure • Two trees with the same number of nodes may not have the same structure.

  15. 9.1.3 Structure • Depth is the distance from the root. • Nodes at the same depth are said to be at the same level, with the root being at level zero. • The height of a tree is the maximum level (or depth) at which there is a node.

  16. 9.1.3 Structure • Full Binary Tree: A binary tree in which all of the leaves are on the same level and every nonleaf node has two children

  17. 9.1.3 Structure • (a), first three are strictly binary, but the fourth is not. first two are FULL binary tree • (b), first two are complete and the last two are not. • At level i, there can be at most 2i nodes. • Maximum number of nodes over all the levels.

  18. 9.1.4 Recursive Definitions

  19. 9.1.4 Recursive Definitions

  20. Traversal Definitions • Preorder traversal: Visit the root, visit the left subtree, visit the right subtree • Inorder traversal: Visit the left subtree, visit the root, visit the right subtree • Postorder traversal: Visit the left subtree, visit the right subtree, visit the root

  21. Visualizing Binary Tree Traversals

  22. Three Binary Tree Traversals

  23. 9.2 Binary Tree Traversals

  24. 9.2 Binary Tree Traversals

  25. Binary Search Tree

  26. Overview • A binary tree possesses ordering property that maintains the data in its nodes in sorted order. • Since the search tree is a linked structure, entries may be inserted and deleted without having to move other entries over, unlike ordered lists in which insertions and deletions require data movement. • The AVL tree is a height-balanced binary search tree that delivers guaranteed worst-case search, insert, and delete times that are all O(log n)

  27. Learning Objectives • Explore the motivation for binary search trees by learning about the comparison tree for binary search. • Use the comparison tree as an analytical tool to determine the running time of binary search. • Describe the binary search tree structure and properties. • Study the primary binary search tree operations of search, insert, and delete, and analyze their running times.

  28. Learning Objectives • Understand a binary search tree class interface and use it in application examples. • Implement the binary search tree class with a binary tree class as the reused storage component. • Study the AVL tree structure properties, the search, insert, and delete operations, and their running times.

  29. 10.2 Binary Search Tree Properties

  30. 10.2 Binary Search Tree Properties • All three trees have the same set of keys. • Their structures are different, depending on the sequence of insertion or deletion.

  31. 10.3 Binary Search Tree Operations • Three foundational operations • Search • Insert • Delete

  32. 10.3.1 Search • The tree nodes are for real. • The target key is compared against the key at the root of the tree. • If they are equal, sucess. • If not, recusively search the appropriate child. • Search terminates with failure if an empty subtree is reached.

  33. 10.3.1 Search

  34. 10.3.2 Insert • To insert a value, search must force a failure. • Item in inserted in the failed location. • A newly inserted node always becomes a leaf node in the search tree.

  35. 10.3.2 Insert

  36. 10.3.3 Delete • The value to be deleted is first located in the binary search tree. • Three possible cases. • Case a: X is a leaf node.

  37. 10.3.3 Delete • Case b: X has one child • Replace the deleted node with the child.

  38. 10.3.3 Delete • Case c: X has two children • Find the inorder predecessor, Y, of X. • Copy the entry at Y into X. • Apply deletion on Y. • Applying deletion on Y will revert to either case b or a since Y is guaranteed to not have a right subtree.

  39. Running Times • Search: worst case • Tied to the worst possible shape a tree can attain. • Such a tree degenerates into sequential search. • O(n).

  40. Running Times

  41. Running Times • Insertion: worst case • O(n) • Deletion: worst case • O(n)

  42. Balancing • Keeping a binary search tree balanced allows the height never to exceed O(log n). • There are two popular ways of maintaining and constructing balanced binary search trees. • AVL tree. • red-black tree.

  43. 10.4 A BinarySearchTree Class

  44. 10.4 A BinarySearchTree Class

  45. 10.5.1 Example Treesort • inOrder traversal method invokes visitor.visit() when a node is visited.

  46. 10.5.1 Example: Treesort

  47. 10.5.2 Example: Counting Keys • Count the number of keys in a binary search tree that are less than a given key. • It is possible to simply examine every node of the tree.

  48. 10.6 BinarySearchTree Class Implementation

  49. 10.6 BinarySearchTree Class Implementation

  50. 10.6.1 Search Implementation

More Related