Concept of Trees Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 6
Feb 22, 2016
Concept of Trees
Min ChenSchool of Computer Science and Engineering Seoul National University
Data Structure: Chapter 6
Content
Definition of Trees Representing Rooted Tree Tree Traversal
Preorder Traversal Postorder Traversal Level Order Traversal
Definition of Trees
Tree: Set of nodes and edges that connect them Exactly one path between any 2 nodes
Rooted Tree: One distinguished node is called the root Every node C, except root, has one parent P,
the first node on path from c to the root. C is P’s child
Root has no parent A node can have any number of children
Some Definitions
Leaf Node with no children
Siblings Nodes with same parent
Ancestors nodes on path from d to rott, including d,
d’s parent, d’s grand parent, … root Descendant
If A is B’s ancestor, then B is A’s Descendant
Some Definitions (2) Length of path
Number of edges in path Depth of node n
Length of path from n to root Depth of root is zero
Height of node n Length of path from n to its deepest descendant Height of any leaf is zero Height of a tree = Height of the root
Subtree rooted at n The tree formed by n and its descendants
Representing Rooted Trees G & T
Each node has 3 references stored in a list▪ Item▪ Parent▪ Children
Another Option: Sibling Tree Siblings are directly linked
Sibling Tree
Next Sibling
Parent
ItemFirst Child
Class SibTreeNode{ Object item ; SibTreeNode parent ; SibTreeNodefirstChild; SibTreeNodenextSibling;}
Sibling Tree
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Next Sibling
Parent
ItemFirst Child
Tree Traversal
Rooted Tree Preorder Traversal Postorder Traversal Level Order Traversal
Binary Tree Inorder Traveral
Preorder Traversal
Visit each node before recursively visiting its children, left to right
A
B C
D E F G H
AA’s First Child
BB’s First Child
DD has no child, then sibling
EE has no child, then sibling
FF has no child, no sibling
B has no child, no siblingA has no child, then sibling
CC’s First Child
GG has no child, then sibling
HH has no child, no sibling
Preorder Traversal
Class SibTreeNode { public void preorder() { this.visit(); if(firstChild!=null){
firstChild.preorder(); } if(nextSibling!=null){
nextSibling.preorder(); } }}
Preorder Traversal Realization by Recursion
Preorder Traversal
Preorder Traversal Realization by Stacks
A
B C
D E F G HABC
A
Stack:
Visiting Sequence: B
DEF
D E F C
GH
G H
Postorder Traversal
Visit each node’s children (left-to-right) before the node itself
A
B C
D E F G H
Postorder Traversal
Postorder Traversal Realization by RecursionClass SibTreeNode {
public void postorder() { if(firstChild!=null) {
firstChild.postorder(); } this.visit(); if(nextSibling!=null) {
nextSibling.postorder(); } }}
Level Order Traversal
Visit root, then all (height-1) nodes, then all (height-2) nodes, … etc.
A
B C
D E F G H
Level Order Traversal
Level Order Traversal Realization by Queues Queue:
A
A
B C
D E F G H
BCDEFGH
AVisiting Sequence: B D E FC G H
Binary Tree
A Binary Tree No node has > 2 children Every child is either left child or a right
child, even if it is the only child
Representing Binary Tree Binary Tree Node
Right Child
Parent
ItemLeft Child
Class BiTreeNode{ Object item ; BiTreeNode parent ; BiTreeNode leftChild; BiTreeNode rightChild;}
A Binary Tree
Right Child
Parent
ItemLeft Child
Right Child
Parent
ItemLeft Child
Right Child
Parent
ItemLeft Child
Right Child
Parent
ItemLeft Child
Right Child
Parent
ItemLeft Child
Right Child
Parent
ItemLeft Child
Inorder Traversal for Binary Tree Visit left child, then node, then right
childClass BiTreeNode { public void inorder() { if(leftChild!=null){
leftChild.inorder();}this.visit();if(rightChild!=null) {
rightChild.inorder();}
}}
Inorder Traversal for Binary Tree Visualization of inorder traversal
A
B C
D E F
Thank you!