Professional Documents
Culture Documents
Binary Trees
Binary Trees
Searching - 1
Searching
• Sequential Searches
• Both arrays (unsorted) and linked lists
• Time is proportional to n
• We call this time complexity O(n)
• Pronounce this “big oh” of n
• Binary search
• Sorted array
• Time proportional to log2 n
• Time complexity O(log n)
Searching - Binary search
AddToCollection
• adds each item in correct place
• Find position c1 log2 n
• Shuffle down c2 n
• Overall c1 log2 n + c2 n
or c2 n Dominant
term
Each add to the sorted array is O(n)
Each sub-tree
is itself
a binary tree
Trees - Implementation
• Data structure
struct t_node {
int item_number;
struct t_node *left;
struct t_node *right;
};
struct Tree {
Node root;
};
Binary Search Tree
Find 22 in the following tree
return n;
Trees - Implementation
• Find
extern int KeyCmp( int a, int b);
/* Returns -1, 0, 1 for a < b, a == b, a > b */
• Height, h
• Nodes traversed in a path from the root to a leaf
• Number of nodes
• n = 1 + 21 + 22 + … + 2h = 2h+1 - 1
Trees - Performance
• Find
• Complete Tree
• ??
Trees - Addition
• Take this list of characters and form a tree
A B C D E F
• In this case
? Find
? Add
? Delete