concept of trees

Post on 22-Feb-2016

53 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Data Structure: Chapter 6. Min Chen School of Computer Science and Engineering Seoul National University. Concept of Trees. Content. Definition of Trees Representing Rooted Tree Tree Traversal Preorder Traversal Postorder Traversal Level Order Traversal. Definition of Trees. Tree: - PowerPoint PPT Presentation

TRANSCRIPT

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!

top related