![Page 1: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/1.jpg)
Chapter 4: TreesChapter 4: Trees
Part I: General Tree Concepts
Mark Allen Weiss: Data Structures and Algorithm Analysis in Java
![Page 2: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/2.jpg)
Trees
DefinitionsRepresentationBinary treesTraversalsExpression trees
2
![Page 3: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/3.jpg)
Definitions
3
tree - a non-empty collection of vertices & edgesvertex (node) - can have a name and carry other associated informationpath - list of distinct vertices in which successive vertices are connected by edgesany two vertices must have one and only one path between them else its not a tree
a tree with N nodes has N-1 edges
![Page 4: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/4.jpg)
Definitions
root - starting point (top) of the tree
parent (ancestor) - the vertex “above” this vertex
child (descendent) - the vertices “below” this vertex
4
![Page 5: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/5.jpg)
Definitions
leaves (terminal nodes) - have no children
level - the number of edges between this node and the root
ordered tree - where children’s order is significant
5
![Page 6: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/6.jpg)
Definitions
Depth of a node - the length of the path from the root to that node• root: depth 0
Height of a node - the length of the longest path from that node to a leaf• any leaf: height 0
Height of a tree: The length of the longest path from the root to a leaf
6
![Page 7: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/7.jpg)
Balanced Trees
the difference between the height of the left sub-tree and the height of the right sub-tree is not more than 1.
7
![Page 8: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/8.jpg)
Trees - Example
8
E
R
T
ELPM
EA
SA
root
Leaves or terminal nodes
Child (of root)
Depth of T: 2
Height of T: 1
Level
0
1
3
2
![Page 9: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/9.jpg)
Tree Representation
9
Class TreeNode { Object element; TreeNode firstChild; TreeNode nextSibling; }
![Page 10: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/10.jpg)
Example
10
a
b fe
c d g
a
b e
c d
f
g
![Page 11: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/11.jpg)
Binary Tree
11
S
A
B
N
O
N
P
D
M
I
S Internal node
External node
![Page 12: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/12.jpg)
Height of a Complete Binary Tree
12
L 0
L 1
L 2
L 3
At each level the number of the nodes is doubled. total number of nodes: 1 + 2 + 22 + 23 = 24 - 1 = 15
![Page 13: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/13.jpg)
Nodes and Levels in a Complete Binary Tree
13
Number of the nodes in a tree with M levels:
1 + 2 + 22 + …. 2M = 2 (M+1) - 1 = 2*2M - 1
Let N be the number of the nodes.
N = 2*2M - 1, 2*2M = N + 12M = (N+1)/2M = log( (N+1)/2 )
N nodes : log( (N+1)/2 ) = O(log(N)) levelsM levels: 2 (M+1) - 1 = O(2M ) nodes
![Page 14: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/14.jpg)
Binary Tree Node
14
Class BinaryNode
{
Object Element; // the data in the node
BinaryNode left; // Left child
BinaryNode right; // Right child
}
![Page 15: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/15.jpg)
Binary Tree – Preorder Traversal
15
C
LR
E
T
D
O
N
U
M
P
A
Root Left Right
First letter - at the root
Last letter – at the rightmost node
![Page 16: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/16.jpg)
Preorder Algorithm
16
preorderVisit(tree){ if (current != null) { process (current);
preorderVisit (left_tree);preorderVisit (right_tree);
}}
![Page 17: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/17.jpg)
Binary Tree – Inorder Traversal
17
U
AE
R
T
N
P
D
M
O
C
L
LeftRootRight
First letter - at the leftmost node
Last letter – at the rightmost node
![Page 18: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/18.jpg)
Inorder Algorithm
18
inorderVisit(tree){ if (current != null) {
inorderVisit (left_tree); process (current);
inorderVisit (right_tree); }}
![Page 19: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/19.jpg)
Binary Tree – Postorder Traversal
19
D
LU
A
N
E
P
R
O
M
C
T
LeftRightRoot
First letter - at the leftmost node
Last letter – at the root
![Page 20: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/20.jpg)
Postorder Algorithm
20
postorderVisit(tree){ if (current != null) {
postorderVisit (left_tree);postorderVisit (right_tree);process (current);
}}
![Page 21: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/21.jpg)
Expression Trees
21
1 2
The stack contains references to tree nodes (bottom is to the left)
+
1 2
3*
+
1 2
3
(1+2)*3
Post-fix notation: 1 2 + 3 *
![Page 22: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/22.jpg)
Expression Trees
22
In-order traversal:
(1 + 2) * ( 3)
Post-order traversal:
1 2 + 3 *
*
+
1 2
3
![Page 23: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/23.jpg)
Binary Search Trees
DefinitionsOperations and complexityAdvantages and disadvantagesAVL Trees
Single rotationDouble rotation
Splay TreesMulti-Way Search
23
![Page 24: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/24.jpg)
Definitions
24
Each node – a record with a key
and a valuea left link a right link
All records with smaller keys – left subtreeAll records with larger keys – right subtree
![Page 25: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/25.jpg)
Example
25
![Page 26: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/26.jpg)
Operations
Search - compare the values and proceed either to the left or to the right
Insertion - unsuccessful search - insert the new node at the bottom where the search has stopped
Deletion - replace the value in the node with the smallest value in the right subtree or the largest value in the left subtree.
Retrieval in sorted order – inorder traversal
26
![Page 27: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/27.jpg)
Complexity
27
Logarithmic, depends on the shape of the tree
In the worst case – O(N) comparisons
![Page 28: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/28.jpg)
Advantages of BST
SimpleEfficientDynamic
One of the most fundamental algorithms in CS
The method of choice in manyapplications
28
![Page 29: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/29.jpg)
Disadvantages of BST
The shape of the tree depends on the order of insertions, and it can be degenerated.
When inserting or searching for an element, the key of each visited node has to be compared with the key of the element to be inserted/found.
Keys may be long and the run time may increase much.
29
![Page 30: Chapter 4: Trees Part I: General Tree Concepts Mark Allen Weiss: Data Structures and Algorithm Analysis in Java](https://reader035.vdocuments.mx/reader035/viewer/2022081511/5697bfe11a28abf838cb384c/html5/thumbnails/30.jpg)
Improvements of BST
Keeping the tree balanced:
AVL trees (Adelson - Velskii and Landis)
Balance condition: left and right subtrees of each node can differ by at most one level.
It can be proved that if this condition is observed the depth of the tree is O(logN).
Reducing the time for key comparison: Radix trees - comparing only the leading bits of the keys (not discussed here)
30