CS 146: Data Structures and Algorithms June 18 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak www.cs.sjsu.edu/~mak.

Slides:



Advertisements
Similar presentations
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Advertisements

Binary Trees, Binary Search Trees COMP171 Fall 2006.
Computer Science 2 Data Structures and Algorithms V section 2 Introduction to Trees Professor: Evan Korth New York University.
Fall 2007CS 2251 Trees Chapter 8. Fall 2007CS 2252 Chapter Objectives To learn how to use a tree to represent a hierarchical organization of information.
Trees, Binary Trees, and Binary Search Trees COMP171.
Binary Trees Terminology A graph G = is a collection of nodes and edges. An edge (v 1,v 2 ) is a pair of vertices that are directly connected. A path,
Chapter 4: Trees General Tree Concepts Binary Trees Lydia Sinapova, Simpson College Mark Allen Weiss: Data Structures and Algorithm Analysis in Java.
Trees Chapter 8. Chapter 8: Trees2 Chapter Objectives To learn how to use a tree to represent a hierarchical organization of information To learn how.
Trees, Binary Trees, and Binary Search Trees. 2 Trees * Linear access time of linked lists is prohibitive n Does there exist any simple data structure.
Lec 15 April 9 Topics: l binary Trees l expression trees Binary Search Trees (Chapter 5 of text)
Review: Search Linear Search Binary Search Search demos: – ndan/dsal/appldsal.htmlhttp://
1 BST Trees A binary search tree is a binary tree in which every node satisfies the following: the key of every node in the left subtree is.
Version TCSS 342, Winter 2006 Lecture Notes Trees Binary Trees Binary Search Trees.
CS 46B: Introduction to Data Structures July 30 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak.
Binary Search Trees. BST Properties Have all properties of binary tree Items in left subtree are smaller than items in any node Items in right subtree.
1 Chapter 18 Trees Objective To learn general trees and recursion binary trees and recursion tree traversal.
Trees Chapter 8. 2 Tree Terminology A tree consists of a collection of elements or nodes, organized hierarchically. The node at the top of a tree is called.
Lecture Objectives  To learn how to use a tree to represent a hierarchical organization of information  To learn how to use recursion to process trees.
Tree. Basic characteristic Top node = root Left and right subtree Node 1 is a parent of node 2,5,6. –Node 2 is a parent of node.
CS 146: Data Structures and Algorithms June 23 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak
CS 146: Data Structures and Algorithms June 23 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak
Searching: Binary Trees and Hash Tables CHAPTER 12 6/4/15 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education,
Lecture 10 Trees –Definiton of trees –Uses of trees –Operations on a tree.
Spring 2010CS 2251 Trees Chapter 6. Spring 2010CS 2252 Chapter Objectives Learn to use a tree to represent a hierarchical organization of information.
CMSC 341 Introduction to Trees. 8/3/2007 UMBC CMSC 341 TreeIntro 2 Tree ADT Tree definition  A tree is a set of nodes which may be empty  If not empty,
DATA STRUCTURES AND ALGORITHMS Lecture Notes 5 Prepared by İnanç TAHRALI.
Binary Trees 2 Overview Trees. Terminology. Traversal of Binary Trees. Expression Trees. Binary Search Trees.
Tree (new ADT) Terminology:  A tree is a collection of elements (nodes)  Each node may have 0 or more successors (called children)  How many does a.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Data Structures and Algorithm Analysis Trees Lecturer: Jing Liu Homepage:
Trees Chapter 8. 2 Tree Terminology A tree consists of a collection of elements or nodes, organized hierarchically. The node at the top of a tree is called.
Trees, Binary Trees, and Binary Search Trees COMP171.
Trees  Linear access time of linked lists is prohibitive Does there exist any simple data structure for which the running time of most operations (search,
Lec 15 Oct 18 Binary Search Trees (Chapter 5 of text)
CS 202, Spring 2003 Fundamental Structures of Computer Science II Bilkent University1 Trees CS 202 – Fundamental Structures of Computer Science II Bilkent.
CE 221 Data Structures and Algorithms Chapter 4: Trees (Binary) Text: Read Weiss, §4.1 – 4.2 1Izmir University of Economics.
Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java.
IKI 10100I: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100I: Data.
AVL Trees An AVL tree is a binary search tree with a balance condition. AVL is named for its inventors: Adel’son-Vel’skii and Landis AVL tree approximates.
CMSC 341 Introduction to Trees. 2/21/20062 Tree ADT Tree definition –A tree is a set of nodes which may be empty –If not empty, then there is a distinguished.
CISC 235 Topic 3 General Trees, Binary Trees, Binary Search Trees.
1/14/20161 BST Operations Data Structures Ananda Gunawardena.
Rooted Tree a b d ef i j g h c k root parent node (self) child descendent leaf (no children) e, i, k, g, h are leaves internal node (not a leaf) sibling.
Trees Ellen Walker CPSC 201 Data Structures Hiram College.
CMSC 341 Binary Search Trees. 8/3/2007 UMBC CMSC 341 BST 2 Binary Search Tree A Binary Search Tree is a Binary Tree in which, at every node v, the values.
Definitions Read Weiss, 4.1 – 4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.
1 CSE 326: Data Structures Trees Lecture 6: Friday, Jan 17, 2003.
1 CMSC 341 Introduction to Trees Textbook sections:
1 Trees 3: The Binary Search Tree Reading: Sections 4.3 and 4.6.
CC 215 Data Structures Trees
CMSC 341 Introduction to Trees 8/3/2007 CMSC 341 Tree Intro.
CMSC 341 Introduction to Trees.
Trees.
CSE 373 Data Structures Lecture 7
Binary Trees, Binary Search Trees
CMPE 180A Data Structures and Algorithms in C++ April 26 Class Meeting
Trees.
Lec 12 March 9, 11 Mid-term # 1 (March 21?)
Trees CSE 373 Data Structures.
Trees.
Data Structures and Algorithm Analysis Trees
Binary Trees, Binary Search Trees
CMSC 341 Introduction to Trees CMSC 341 Tree Intro.
Tree.
Trees.
Trees CSE 373 Data Structures.
CMSC 341 Binary Search Trees 8/3/2007 CMSC 341 BST.
Trees CSE 373 Data Structures.
Binary Trees, Binary Search Trees
Data Structures Using C++ 2E
Presentation transcript:

CS 146: Data Structures and Algorithms June 18 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 2 Trees  A tree is a collection of nodes: One node is the root node.  A node contains data and has pointers (possibly null) to other nodes, its children. The pointers are directed edges. Each child node can itself be the root of a subtree. A leaf node is a node that has no children.  Each node other than the root node has exactly one parent node. Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 3 Trees, cont’d  The path from node n 1 to node n k is the sequence of nodes in the tree from n 1 to n k. What is the path from A to Q? From E to P?  The length of a path is the number of its edges. What is the length of the path from A to Q? Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 4 Trees, cont’d  The depth of a node is the length of the path from the root to that node. What is the depth of node J? Of the root node? Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 5 Trees, cont’d  The height of a node is the length of the longest path from the node to a leaf node. What is the height of node E? Of the root node?  Depth of a tree = depth of its deepest node = height of the tree Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 6 Tree Implementation  In general, a tree node can have an arbitrary number of child nodes.  Therefore, each tree node should have a link to its first child, and a link to its next sibling: class TreeNode { Object element; TreeNode firstChild; TreeNode nextSibling; }

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 7 Tree Implementation, cont’d  Conceptual view of a tree:  Implementation view of the same tree: Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 8 Tree Traversals  There are several different algorithms to “walk” or “traverse” a tree.  Each algorithm determines a unique order that each and every node in the tree is “visited”.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 9 Preorder Tree Traversal  First visit a node. Visit the node before (pre) visiting its child nodes.  Then recursively visit each of the node’s child nodes in sibling order.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 10 Preorder Tree Traversal, cont’d private void listAll(int depth) { printName(depth); if (isDirectory()) { for each file f in directory { f.listAll(depth+1); } public void listAll() { listAll(0); } Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 11 Postorder Tree Traversal  First recursively visit each of a node’s child nodes in sibling order.  Then visit the node itself.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 12 Postorder Tree Traversal, cont’d private void size() { int totalSize = sizeOfThisFile(); if (isDirectory()) { for each file f in directory { totalSize += f.size(); } return totalSize; } Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 13 Binary Trees  A binary tree is a tree where each node can have 0, 1, or 2 child nodes. The depth of an average binary tree with N nodes is much smaller than N : Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 14 Binary Trees, cont’d  An arithmetic expression tree: Understand from the textbook how this tree is built.  Or take CS 153: Concepts of Compiler Design

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 15 Conversion from Infix to Postfix Notation  Do a postorder walk of our expression tree to output the expression in postfix notation: abc*+de*f+g*+ Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 16 Binary Search Trees  A binary search tree has these properties for each of its nodes: All the values in the node’s left subtree is less than the value of the node itself. All the values in the node’s right subtree is greater than the value of the node itself. Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 17 Inorder Tree Traversal  Recursively visit a node’s left subtree.  Visit the node itself.  Recursively visit the node’s right subtree.  If you do an inorder walk of a binary search tree, you will visit the nodes in sorted order.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 18 Inorder Tree Traversal, cont’d  An inorder walk of the left tree visits the nodes in sorted order: Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 19 The Binary Search Tree ADT  The node class of our binary search tree ADT. private static class BinaryNode { AnyType element; // data in the node BinaryNode left; // left child BinaryNode right; // right child BinaryNode(AnyType theElement) { this(theElement, null, null); } BinaryNode(AnyType theElement, BinaryNode lt, BinaryNode rt) { element = theElement; left = lt; right = rt; }

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 20 The Binary Search Tree ADT public class BinarySearchTree > { private BinaryNode root; public BinarySearchTree() { root = null; } private BinaryNode findMin(BinaryNode t) {... }... private static class BinaryNode {... }

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 21 The Binary Search Tree: Min and Max  Finding the minimum and maximum values in a binary search tree is easy. The leftmost node has the minimum value. The rightmost node has the maximum value.  You can find the minimum and maximum values recursively or (better) iteratively.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 22 The Binary Search Tree: Min and Max, cont’d  Recursive code to find the minimum value. Chase down the left child links. private BinaryNode findMin(BinaryNode t) { if (t == null) { return null; } else if (t.left == null) { return t; // found the leftmost node } else { return findMin(t.left); }

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 23 The Binary Search Tree: Min and Max, cont’d  Iterative code to find the maximum value. Chase down the right child links. private BinaryNode findMax(BinaryNode t) { if (t != null) { while (t.right != null) { t = t.right; } return t; }

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 24 The Binary Search Tree: Contains  Does a binary search tree contain a target value?  Search recursively starting at the root node: If the target value is less than the node’s value, then search the node’s left subtree. If the target value is greater than the node’s value, then search the node’s right subtree. If the values are equal, then yes, the target value is contained in the tree. If you “run off the bottom” of the tree, then no, the target value is not contained in the tree.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 25 The Binary Search Tree: Contains, cont’d private boolean contains(AnyType x, BinaryNode t) { if (t == null) return false; int compareResult = x.compareTo(t.element); if (compareResult < 0) { return contains(x, t.left); } else if (compareResult > 0) { return contains(x, t.right); } else { return true; // Match }

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak Break 26

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 27 The Binary Search Tree: Insert  To insert a target value into the tree: Proceed as if you are checking whether the tree contains the target value.  As you’re recursively examining left and right subtrees, if you encounter a null link (either a left link or a right link), then that’s where the new value should be inserted. Create a new node containing the target value and replace the null link with a link to the new node. So the new node is attached to the last-visited node.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 28 The Binary Search Tree: Insert, cont’d  If the target value is already in the tree, either: Insert a duplicate value into the tree. Don’t insert but “update” the existing node.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 29 The Binary Search Tree: Insert Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 30 The Binary Search Tree: Insert private BinaryNode insert(AnyType x, BinaryNode t) { // Create a new node to be attached // to the last-visited node. if (t == null) { return new BinaryNode<>(x, null, null); } int compareResult = x.compareTo(t.element); // Find the insertion point. if (compareResult < 0) { t.left = insert(x, t.left); } else if (compareResult > 0) { t.right = insert(x, t.right); } else { // Duplicate: do nothing. } return t; } Only when a null link is encountered is a node created and returned. The newly created node will be attached to the last-visited node.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 31 The Binary Search Tree: Remove  After removing a node from a binary search tree, the remaining nodes must still be in order.  No child case: The target node to be removed is a leaf node. Just remove the target node.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 32 The Binary Search Tree: Remove, cont’d  One child case: The target node to be removed has one child node. Change the parent’s link to the target node to point instead to the target node’s child. Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 33 The Binary Search Tree: Remove, cont’d  Two children case: The target node to be removed has two child nodes. This is the complicated case.  How do we restructure the tree so that the order of the node values is preserved?

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 34 The Binary Search Tree: Remove, cont’d  Recall what happens you remove a list node. Assume that the list is sorted. If we delete target node 5, which node takes its place? The replacement node is the node that is immediately after the target node in the sorted order

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 35 The Binary Search Tree: Remove, cont’d  A somewhat convoluted way to do this: Replace the target node’s value with the successor node’s value. Then remove the successor node, which is now “empty”

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 36 The Binary Search Tree: Remove, cont’d  The same convoluted process happens when you remove a node from a binary search tree. The successor node is the node that is immediately after the deleted node in the sorted order. Replace the target node’s value with the successor node’s value. Remove the successor node, which is now “empty”

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 37 The Binary Search Tree: Remove, cont’d  If you have a target node in a binary search tree, where is the node that is its immediate successor in the sort order? The successor’s value is ≥ than the target value. It must be the minimum value in the right subtree.  General idea: Replace the value in the target node with the value of the successor node.  The successor node is now “empty”. Recursively delete the successor node.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 38 The Binary Search Tree: Remove, cont’d  Replace the value of the target node 2 with the value of the successor node 3.  Now recursively remove node 3. Data Structures and Algorithms in Java, 3 rd ed. by Mark Allen Weiss Pearson Education, Inc., 2012 The second deletion is easy because the node has no left child. X X

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 39 The Binary Search Tree: Remove, cont’d private BinaryNode remove(AnyType x, BinaryNode t) { if (t == null) return t; int compareResult = x.compareTo(t.element); if (compareResult < 0) { t.left = remove(x, t.left); } else if (compareResult > 0) { t.right = remove(x, t.right); } else if (t.left != null && t.right != null) { t.element = findMin(t.right).element; t.right = remove(t.element, t.right); } else { t = (t.left != null) ? t.left : t.right; } return t; } Two children: Replace the target value with the successor value. Then recursively remove the successor node. No children or one child. Item not found: do nothing.

Computer Science Dept. Summer 2015: June 18 CS 146: Data Structures and Algorithms © R. Mak 40 The Binary Search Tree Animations  Download Java applets from /downloads/ExamplePrograms.ZIP /downloads/ExamplePrograms.ZIP These are from the book Data Structures and Algorithms in Java, 2 nd edition, by Robert LaFlore: algorithms-in-java algorithms-in-java  The binary search tree applet is in Chap08/Tree  Run with the appletviewer application that is in your java/bin directory: appletviewer Tree.html Demo