DATA STRUCTURES -- TREES
|
|
|
BEFORE TREES – A more general structure |
|
|
|
Graph G = (V, E) |
|
V = Vertices |
|
E = Edges |
|
|
|
Undirected Graph |
|
|
|
V = {1,2,3} E =
{(1,2),(2,3),(3,1)} |
|
|
|
Note: (1,2) and (2,1) are the same edge |
|
|
|
VERTEX SYNONOMOUS WITH NODE |
"Directed Graph"
|
|
|
Directed Graph |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PATHS:
e.g. {(3,3),(3,4),(4,1)} |
|
CYCLE: e.g. {(1,2),(2,5),(5,4),(4,1)} |
|
ACYCLIC: DIRECTED GRAPH WITH NO CYCLE |
"INDEGREE:"
|
|
|
|
|
|
|
INDEGREE: NUMBER OF EDGES |
|
DIRECTED INTO A VERTEX |
|
|
|
OUTDEGREE: NUMBER OF EDGES |
|
DIRECTED OUT OF A
VERTEX |
|
|
TREES, cont’d
|
|
|
DEF: A TREE IS AN ACYCLIC |
|
DIGRAPH WHICH HAS ONE |
|
NODE OF INDEGREE 0 (ROOT) |
|
AND ALL OTHER NODES |
|
ARE OF INDEGREE 1 |
|
|
|
DEF: A FOREST IS A (DISJOINT)
UNION |
|
OF A NUMBER OF TREES |
E.g. TREES
|
|
|
|
|
|
|
|
|
|
|
A IS THE ROOT IN ALL 3 EXAMPLES |
|
|
|
LEVEL OR DEPTH: |
|
LEVEL(ROOT) = 0 |
|
LEVEL(NODE) = LENGTH OF PATH FROM
ROOT TO NODE (NUMBER OF
EDGES) |
|
E.g.
LEVEL(B) = 1, LEVEL(D) = 2 IN
ABOVE |
TREES, CONT’D
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOTE: EVERY NODE (EXCEPT A) IS A |
|
DECENDANT OF A |
|
|
|
B, C, D ARE CALLED SIBLINGS |
|
C IS A PARENT OF F |
"HEIGHT OF A VERTEX:"
|
|
|
HEIGHT OF A VERTEX: |
|
THE LENGTH OF THE LONGEST PATH TO A
LEAF |
|
|
|
E.g. HEIGHT(C) = 2 |
|
HEIGHT(TREE) = HEIGHT(ROOT) = 3 |
|
HEIGHT(E) = 0 |
"TREES,"
|
|
|
TREES, CONT’D |
|
|
|
DEF: A BINARY TREE IS ONE FOR WHICH |
|
1) EACH CHILD IS EITHER A LEFT
OR RIGHT CHILD |
|
2) NO VERTEX HAS MORE THAN 2
CHILDREN |
|
i.e. Vertex V đ Outdegree(V) ≤ 2 |
|
E.g.’s: |
|
|
|
|
TREE TRAVERSALS
|
|
|
PREORDER (NLR – Node, Left, Right) |
|
|
|
1) PROCESS ROOT NODE |
|
|
|
2) TRAVERSE LEFT SUBTREE IN
PREORDER |
|
|
|
3) TRAVERSE RIGHT SUBTREE IN
PREORDER |
"E.G."
TREE TRAVERSALS, CONT’D
|
|
|
POSTORDER (LRN) |
|
1) TRAVERSE THE LEFT SUBTREE IN
POSTORDER |
|
2) TRAVERSE THE RIGHT SUBTREE IN
POSTORDER |
|
3) PROCESS THE ROOT NODE |
|
|
|
E.g. |
TREE TRAVERSALS, CONT’D
|
|
|
INORDER (LNR) |
|
1) TRAVERSE THE LEFT SUBTREE IN
INORDER |
|
2) PROCESS THE ROOT NODE |
|
3) TRAVERSE THE RIGHT SUBTREE IN
INORDER |
|
|
|
E.g. |
ARITHMETIC EXPRESSION
TREES
ARITHMETIC EXPRESSION
TREES
"Example Tree Object
Methods"
|
|
|
Example Tree Object Methods |
|
*Construct (initialize) a tree
object |
|
*Build a tree object from a given
set of data |
|
*Destroy (delete) a tree object |
|
*Create a node object in a tree
object |
|
*Delete a node object in a tree
object |
|
*Check to see if a tree object is
empty |
|
*Add/insert a node object specified
by a key value |
|
*Search for a node object specified
by a key value |
|
*Search for a predecessor
(successor) of a single key element |
"Example Tree Object
Methods –..."
|
|
|
Example Tree Object Methods – Cont’d |
|
* Get a specified attribute using a
single search key |
|
*Update a node object with new data |
|
*Retrieve data contained in a node
object |
|
*Sort a tree object |
|
*Display (print) a tree or subtree
object |
|
*Print a node object |
|
*Traverse a tree object |
"// bc_tree.h :..."
|
|
|
// bc_tree.h : Define an abstract base
class “Tree” |
|
Class Tree { |
|
public: |
|
virtual BOOLEAN is_empty (void) =
0; |
|
virtual void build_tree (DATA_TYPE
A[]) = 0; |
|
virtual void add_node (DATA_TYPE
node_data) = 0; |
|
virtual void search_node (DATA_TYPE
srch_key) = 0; |
|
virtual void delete_node (DATA_TYPE
srch_key) = 0; |
|
virtual void postorder (void) = 0; |
|
virtual void preorder (void) = 0 |
|
virtual void inorder (void) = 0; |
"Definition:"
|
|
|
Definition: A binary search tree (BST)
is a binary tree; it is either empty or contains a root node along with left
and right binary search subtrees such that: |
|
(1) the root node (data object)
contains an attribute designated as the key |
|
(2) all nodes in the left
subtree of the root contain keys of value (numerically or alphabetically)
less than or equal to the key of the root node |
|
(3) all nodes in the right
subtree of the root contain keys of value greater than the key of the
root node |
A Binary Search Tree
(BST)
A Binary_Search_Tree
Object
BST Insert Operations