Presentation is loading. Please wait.

Presentation is loading. Please wait.

Data Structures Using Java1 Chapter 10 Binary Trees.

Similar presentations


Presentation on theme: "Data Structures Using Java1 Chapter 10 Binary Trees."— Presentation transcript:

1 Data Structures Using Java1 Chapter 10 Binary Trees

2 Data Structures Using Java2 Chapter Objectives Learn about binary trees Explore various binary tree traversal algorithms Learn how to organize data in a binary search tree Discover how to insert and delete items in a binary search tree Explore nonrecursive binary tree traversal algorithms Learn about AVL (height-balanced) trees

3 Data Structures Using Java3 Binary Trees Definition: A binary tree, T, is either empty or such that: –T has a special node called the root node; –T has two sets of nodes, LT and RT, called the left subtree and right subtree of T, respectively; –LT and RT are binary trees

4 Data Structures Using Java4 Binary Tree

5 Data Structures Using Java5 Binary Tree with One Node The root node of the binary tree = A L A = empty R A = empty

6 Data Structures Using Java6 Binary Tree with Two Nodes

7 Data Structures Using Java7 Binary Tree with Two Nodes

8 Data Structures Using Java8 Various Binary Trees with Three Nodes

9 Data Structures Using Java9 Binary Trees Following class defines the node of a binary tree: protected class BinaryTreeNode { DataElement info; BinaryTreeNode llink; BinaryTreeNode rlink; }

10 Data Structures Using Java10 Nodes For each node: –Data is stored in info –The reference to the left child is stored in llink –The reference to the right child is stored in rlink

11 Data Structures Using Java11 General Binary Tree

12 Data Structures Using Java12 Binary Tree Definitions Leaf: node that has no left and right children Parent: node with at least one child node Level of a node: number of branches on the path from root to node Height of a binary tree: number of nodes no the longest path from root to node

13 Data Structures Using Java13 Height of a Binary Tree Recursive algorithm to find height of binary tree: (height(p) denotes height of binary tree with root p): if(p is NULL) height(p) = 0 else height(p) = 1 + max(height(p.llink),height(p.rlink))

14 Data Structures Using Java14 Height of a Binary Tree Method to implement above algorithm: private int height(BinaryTreeNode p) { if(p == NULL) return 0; else return 1 + max(height(p.llink), height(p.rlink)); }

15 Data Structures Using Java15 Copy Tree Useful operation on binary trees is to make identical copy of binary tree Method copy useful in implementing copy constructor and method copyTree

16 Data Structures Using Java16 Method copy BinaryTreeNode copy(BinaryTreeNode otherTreeRoot) { BinaryTreeNode temp; if(otherTreeRoot == null) temp = null; else { temp = new BinaryTreeNode(); temp.info = otherTreeRoot.info.getCopy(); temp.llink = copy(otherTreeRoot.llink); temp.rlink = copy(otherTreeRoot.rlink); } return temp; }//end copy

17 Data Structures Using Java17 Method copyTree public void copyTree(BinaryTree otherTree) { if(this != otherTree) //avoid self-copy { root = null; if(otherTree.root != null) //otherTree is //nonempty root = copy(otherTree.root); }

18 Data Structures Using Java18 Binary Tree Traversal Must start with the root, then –Visit the node first or –Visit the subtrees first Three different traversals –Inorder –Preorder –Postorder

19 Data Structures Using Java19 Traversals Inorder –Traverse the left subtree –Visit the node –Traverse the right subtree Preorder –Visit the node –Traverse the left subtree –Traverse the right subtree

20 Data Structures Using Java20 Traversals Postorder –Traverse the left subtree –Traverse the right subtree –Visit the node

21 Data Structures Using Java21 Binary Tree: Inorder Traversal

22 Data Structures Using Java22 Binary Tree: Inorder Traversal private void inorder(BinaryTreeNode p) { if(p != NULL) { inorder(p.llink); System.out.println(p.info + “ “); inorder(p.rlink); }

23 Data Structures Using Java23 Binary Tree: Preorder Traversal private void preorder(BinaryTreeNode p) { if(p != NULL) { System.out.println(p.info + “ “); preorder(p.llink); preorder(p.rlink); }

24 Data Structures Using Java24 Binary Tree: Postorder Traversal private void postorder(BinaryTreeNode p) { if(p != NULL) { postorder(p.llink); postorder(p.rlink); System.out.println(p.info + “ “); }

25 Data Structures Using Java25 Implementing Binary Trees: class BinaryTree methods isEmpty inorderTraversal preorderTraversal postorderTraversal treeHeight treeNodeCount treeLeavesCount destroyTree copyTree Copy Inorder Preorder postorder Height Max nodeCount leavesCount

26 Data Structures Using Java26 Binary Search Trees Data in each node –Larger than the data in its left child –Smaller than the data in its right child A binary search tree, t, is either empty or: –T has a special node called the root node –T has two sets of nodes, LT and RT, called the left subtree and right subtree of T, respectively –Key in root node larger than every key in left subtree and smaller than every key in right subtree –LT and RT are binary search trees

27 Data Structures Using Java27 Binary Search Trees

28 Data Structures Using Java28 Operations Performed on Binary Search Trees Determine whether the binary search tree is empty Search the binary search tree for a particular item Insert an item in the binary search tree Delete an item from the binary search tree

29 Data Structures Using Java29 Operations Performed on Binary Search Trees Find the height of the binary search tree Find the number of nodes in the binary search tree Find the number of leaves in the binary search tree Traverse the binary search tree Copy the binary search tree

30 Data Structures Using Java30 Binary Search Tree: Analysis

31 Data Structures Using Java31 Binary Search Tree: Analysis Theorem: Let T be a binary search tree with n nodes, where n > 0.The average number of nodes visited in a search of T is approximately 1.39log 2 n Number of comparisons required to determine whether x is in T is one more than the number of comparisons required to insert x in T Number of comparisons required to insert x in T same as the number of comparisons made in unsuccessful search, reflecting that x is not in T

32 Data Structures Using Java32 Binary Search Tree: Analysis It follows that: It is also known that: Solving Equations (10-1) and (10-2)

33 Data Structures Using Java33 Nonrecursive Inorder Traversal

34 Data Structures Using Java34 Nonrecursive Inorder Traversal: General Algorithm 1.current = root; //start traversing the binary tree at // the root node 2.while(current is not NULL or stack is nonempty) if(current is not NULL) { push current onto stack; current = current.llink; } else { pop stack into current; visit current; //visit the node current = current.rlink; //move to the right child }

35 Data Structures Using Java35 Nonrecursive Preorder Traversal General Algorithm 1. current = root; //start the traversal at the root node 2. while(current is not NULL or stack is nonempty) if(current is not NULL) { visit current; push current onto stack; current = current.llink; } else { pop stack into current; current = current.rlink; //prepare to visit //the right subtree }

36 Data Structures Using Java36 Nonrecursive Postorder Traversal 1.current = root; //start traversal at root node 2.v = 0; 3.if(current is NULL) the binary tree is empty 4.if(current is not NULL) a.push current into stack; b.push 1 onto stack; c.current = current.llink; d.while(stack is not empty) if(current is not NULL and v is 0) { push current and 1 onto stack; current = current.llink; }

37 Data Structures Using Java37 Nonrecursive Postorder Traversal (Continued) else { pop stack into current and v; if(v == 1) { push current and 2 onto stack; current = current.rlink; v = 0; } else visit current; }

38 Data Structures Using Java38 AVL (Height-Balanced Trees) A perfectly balanced binary tree is a binary tree such that: –The height of the left and right subtrees of the root are equal –The left and right subtrees of the root are perfectly balanced binary trees

39 Data Structures Using Java39 Perfectly Balanced Binary Tree

40 Data Structures Using Java40 AVL (Height-Balanced Trees) An AVL tree (or height-balanced tree) is a binary search tree such that: –The height of the left and right subtrees of the root differ by at most 1 –The left and right subtrees of the root are AVL trees

41 Data Structures Using Java41 AVL Trees

42 Data Structures Using Java42 Non-AVL Trees

43 Data Structures Using Java43 Insertion Into AVL Tree

44 Data Structures Using Java44 Insertion Into AVL Trees

45 Data Structures Using Java45 Insertion Into AVL Trees

46 Data Structures Using Java46 Insertion Into AVL Trees

47 Data Structures Using Java47 Insertion Into AVL Trees

48 Data Structures Using Java48 AVL Tree Rotations Reconstruction procedure: rotating tree left rotation and right rotation Suppose that the rotation occurs at node x Left rotation: certain nodes from the right subtree of x move to its left subtree; the root of the right subtree of x becomes the new root of the reconstructed subtree Right rotation at x: certain nodes from the left subtree of x move to its right subtree; the root of the left subtree of x becomes the new root of the reconstructed subtree

49 Data Structures Using Java49 AVL Tree Rotations

50 Data Structures Using Java50 AVL Tree Rotations

51 Data Structures Using Java51 AVL Tree Rotations

52 Data Structures Using Java52 AVL Tree Rotations

53 Data Structures Using Java53 AVL Tree Rotations

54 Data Structures Using Java54 AVL Tree Rotations

55 Data Structures Using Java55 Deletion From AVL Trees Case 1: the node to be deleted is a leaf Case 2: the node to be deleted has no right child, that is, its right subtree is empty Case 3: the node to be deleted has no left child, that is, its left subtree is empty Case 4: the node to be deleted has a left child and a right child

56 Data Structures Using Java56 Analysis: AVL Trees Consider all the possible AVL trees of height h. Let T h be an AVL tree of height h such that T h has the fewest number of nodes. Let T hl denote the left subtree of T h and T hr denote the right subtree of T h. Then: where | T h | denotes the number of nodes in T h.

57 Data Structures Using Java57 Analysis: AVL Trees Suppose that T hl is of height h – 1 and T hr is of height h – 2. T hl is an AVL tree of height h – 1 such that T hl has the fewest number of nodes among all AVL trees of height h – 1. T hr is an AVL tree of height h – 2 that has the fewest number of nodes among all AVL trees of height h – 2. T hl is of the form T h -1 and T hr is of the form T h -2. Hence:

58 Data Structures Using Java58 Analysis: AVL Trees Let Fh+2 = |Th | + 1. Then : Called a Fibonacci sequence; solution to Fh is given by: Hence From this it can be concluded that

59 Data Structures Using Java59 Programming Example: Video Store (Revisited) In Chapter 4,we designed a program to help a video store automate its video rental process. That program used an (unordered) linked list to keep track of the video inventory in the store. Because the search algorithm on a linked list is sequential and the list is fairly large, the search could be time consuming. If the binary tree is nicely constructed (that is, it is not linear), then the search algorithm can be improved considerably. In general, item insertion and deletion in a binary search tree is faster than in a linked list. We will redesign the video store program so that the video inventory can be maintained in a binary tree.

60 Data Structures Using Java60 Chapter Summary Binary trees Binary search trees Recursive traversal algorithms Nonrecursive traversal algorithms AVL trees


Download ppt "Data Structures Using Java1 Chapter 10 Binary Trees."

Similar presentations


Ads by Google