Binary Search Trees for Efficient Data Searching
40 likes | 58 Vues
Learn about binary search trees, a data structure where nodes are organized in a specific way for efficient searches, insertions, and deletions. Explore the removal algorithm, element finding, and how to manipulate nodes. Check out demos and resources for better comprehension.
Binary Search Trees for Efficient Data Searching
E N D
Presentation Transcript
Review: Search • Linear Search • Binary Search • Search demos: • http://www.cosc.canterbury.ac.nz/people/mukundan/dsal/appldsal.html
Binary Search Tree • A binary tree where every node's left subtree has values less than the node's value, and every right subtree has values greater. • A new node is added as a leaf. • Check out this applet: • http://www.cs.jhu.edu/~goodrich/dsa/trees/btree.html
Remove node algorithm • Find element • If it is a leaf just delete it • If it has one child adjust the parent to point to the child (thus bypassing the node) • If it has two children • Replace data with the smallest data of the right subtree • Recursively delete the node which now needs to be removed
remove private BinaryNode<AnyType> remove( AnyType x, BinaryNode<AnyType> t ) { /* 1*/ if( t == null ) return t; // Item not found; do nothing int compareResult = x.compareTo( t.element ); /* 2*/ if(compareResult < 0 ) t.left = remove( x, t.left ); /* 3*/ else if(compareResult > 0 ) t.right = remove( x, t.right ); /* 4*/ else if( t.left != null && t.right != null ) // Two children { t.element = findMin( t.right ).element; t.right = remove( t.element, t.right ); } /*567*/ else t = ( t.left != null ) ? t.left : t.right; return t; }