Search Trees Study Guide: Difference between revisions
From charlesreid1
| Line 50: | Line 50: | ||
=ADTs and Interfaces= | =ADTs and Interfaces= | ||
==Binary Search Tree== | |||
Binary search tree interface: | |||
* get | |||
* set | |||
* insert | |||
* remove | |||
* node navigation methods: | |||
** first | |||
** last | |||
** before | |||
** after | |||
** parent | |||
** left/right | |||
TreeMap: | |||
* see map implementation | |||
* inherits from map base class and binary tree class directly (multiple inheritance) | |||
Balanced Search Tree: | |||
* rotate(p) - rotate p and its parent | |||
* restructure(p) - trinode restructuring | |||
AVL Tree: | |||
* Node: | |||
** int height | |||
** extends other node classes | |||
* recompute height | |||
* is balanced | |||
* tall child | |||
* tall grandchild | |||
* rebalance | |||
Splay Tree: | |||
* splay | |||
* extends TreeMap type | |||
* utilizes rotation method | |||
(2,4) Tree | |||
* standard map/tree implementation | |||
* Node: | |||
** Multiple entries per node | |||
** Use a hash table to keep track of nodes | |||
** Use a sorted array, b/c O(1) size means its cheap and you go with what is simple | |||
Red Black Trees: | |||
* Node: | |||
** boolean red black | |||
** get/set red | |||
** get/set black | |||
* is leaf | |||
* get red child | |||
* rebalance inset | |||
* resolve red | |||
* rebalance delete | |||
* fix deficit | |||
=Implementations= | =Implementations= | ||
Revision as of 07:54, 11 July 2017
Definitions and Variations
Definitions
binary search trees - binary tree data structure, guarantes keys in left subtree < k, keys in right subtree > k
in order traversal - visiting each node of a BST in sorted order
- traverse left subtree, visit action, traverse right subtree.
- sorted iteration of keys can be made in O(n) time.
binary search - search algorithm in which successive halves of the array of data are chosen; utilizes comparison and equals info
rebalancing - as nodes are added and removed, left and right nodes can become imbalanced, affecting search speed - O(log N) becomes O(N)
rotation - principal operation of rebalancing, rotates a child above its parent
trinode restructuring - restructure connection from grandparent node to grandchild node to shorten path between them
splay tree - binary tree structure in which most frequently used/accessed items are kept near the root
factory method pattern - subclass controls behavior details, implementation handled in parent class
AVL (Adelson-Velski-Landis) tree - self-balancing binary tree that ensures the height is O(log N) by guaranteeing the following:
$ | \mbox{left tree height} - \mbox{right tree height} | \leq 1 $
balanced AVL tree - height difference is maximum of 1
unbalanced AVL tree - height difference is larger than 1
splay - moving a node x to the root via a restructuring sequence (zig-zig, zig-zag, and zig); each move shifts the node closer to the root
multiway search tree - search tree in which internal nodes have more than 2 children
d-node - a tree node with d children
secondary data structure - a data structure that serves in support of another, primary data structure; for example, d-nodes have maps
bootstrapping - use of a simpler solution to create a more advanced solution (O(n) map is OK, if 1-10 items max)
(2,4) tree - tree in which every internal node has at most 4 children
red-black tree - search tree in which nodes are colored red or black to maintain balance
ADTs and Interfaces
Binary Search Tree
Binary search tree interface:
- get
- set
- insert
- remove
- node navigation methods:
- first
- last
- before
- after
- parent
- left/right
TreeMap:
- see map implementation
- inherits from map base class and binary tree class directly (multiple inheritance)
Balanced Search Tree:
- rotate(p) - rotate p and its parent
- restructure(p) - trinode restructuring
AVL Tree:
- Node:
- int height
- extends other node classes
- recompute height
- is balanced
- tall child
- tall grandchild
- rebalance
Splay Tree:
- splay
- extends TreeMap type
- utilizes rotation method
(2,4) Tree
- standard map/tree implementation
- Node:
- Multiple entries per node
- Use a hash table to keep track of nodes
- Use a sorted array, b/c O(1) size means its cheap and you go with what is simple
Red Black Trees:
- Node:
- boolean red black
- get/set red
- get/set black
- is leaf
- get red child
- rebalance inset
- resolve red
- rebalance delete
- fix deficit
Implementations
Algorithms for Operations
Complexity and Cost
OOP Principles
Flags
| Search Trees Part of Computer Science Notes
Series on Data Structures
Binary Search Trees · Balanced Search Trees Trees/OOP · Search Trees/OOP · Tree Traversal/OOP · Binary Trees/Inorder
(Note that heaps are also value-sorting trees with minimums at the top. See Template:PriorityQueuesFlag and Priority Queues.)
|