40 likes | 54 Views
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.
E N D
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; }