Binary Search Trees. BST Properties Have all properties of binary tree Items in left subtree are...
-
Upload
marvin-shields -
Category
Documents
-
view
215 -
download
0
Transcript of Binary Search Trees. BST Properties Have all properties of binary tree Items in left subtree are...
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 are larger than items in any node
Items
• Items must be comparable
• All items have a unique value
• Given two distinct items x and y either– value(x) < value(y)– value(x) > value(y)
• If value(x) = value(y) then x = y
• It will simplify programming to assume there are no duplicates in our set of items.
Items
• Need to map Items to a numerical value
• Integers– Value(x) = x
• People– Value(x) = ssn– Value(x) = student id
Comparable Interface
• Want general tree code• Requirement of item is that it supports
– <– >– =
• Java uses Interfaces for implementation• Similar to abstract method• Specify a method that using class is
responsible for
BST Operations
• Constructor
• Insert
• Find– Findmin– Findmax
• Remove
BST Operations
• Generally Recursive
BinaryNode operation( Comparable x, BinaryNode t ) {// End of path
if( t == null ) return null;
if( x.compareTo( t.element ) < 0 )return operation( x, t.left );
else if( x.compareTo( t.element ) > 0 )return operation( x, t.right );
else return t; // Match}
BST Find Method
private BinaryNode find( Comparable x, BinaryNode t ) { if( t == null ) return null; if( x.compareTo( t.element ) < 0 ) return find( x, t.left ); else if( x.compareTo( t.element ) > 0 ) return find( x, t.right ); else return t; // Match }
BST Remove Operations
• Remove– Node is leaf
• Remove node
– Node has one child• Replace node with child
– Node has two children• Replace node with smallest child of right subtree.
Removing with value 2
6
2 8
1 5
3
4
6
3 8
1 5
3
4
6
3 8
1 5
3
4
Remove method private BinaryNode remove( Comparable x, BinaryNode t ) { if( t == null ) return t; // Item not found; do nothing if( x.compareTo( t.element ) < 0 ) t.left = remove( x, t.left ); else if( x.compareTo( t.element ) > 0 ) t.right = remove( x, t.right ); else if( t.left != null && t.right != null ) // Two children { t.element = findMin( t.right ).element; t.right = remove( t.element, t.right ); } else t = ( t.left != null ) ? t.left : t.right; return t; }
Internal Path Length
• Review depth/height
• Depth– Depth is number of path segments from root
to node– Depth of node is distance from root to that
node.– Depth is unique– Depth of root is 0
Internal Path Length
• Height– Height is maximum distance from node to a
leaf.– There can be many paths from a node to a
leaf.– The height of the tree is another way of
saying height of the root.
Internal Path Length
• IPL is the sum of the depths of all the nodes in a tree
• It gives a measure of how well balanced the tree is.
Internal Path Length
11
2
N = 4IPL = 1 + 1 + 2 = 4
Internal Path Length
1
2
N = 4IPL = 1 + 2 + 3 = 6
3
Average IPL for N nodesN = 4
• Calculate IPL of all possible trees
1
2
3
11
2
1
2 2
BST Efficiency
• If tree is balanced O(log(n))
• No guarantee that tree will be balanced
• Analysis in book suggests on IPL = O(nlog(n))
• This analysis is based on the assumption that all trees are equally likely
• Could always get the worst case (a degenerate tree).
Where do BST fit in
• Simple to understand
• Works for small datasets
• Basis for more complicated trees
• Using inheritance can implement– AVL trees– Splay trees– Red Black trees
Do your Lex