14 visualizações

Enviado por RickyJohn

- Ai Lecture 2
- unit 2 ds
- UNIT III part 1.pptx
- Slicing and Non Slicing Floor Planning
- MGS3100_Slides8b
- go-ques
- BinarySearchAVLTree.java
- Datastructure Questions
- Unit4 Binary Tree
- Character Based Method -Unit 1 CMB
- CPE311 Trees
- Programs
- Trees
- Pranav Technology
- Cs1997 Sureshkumar.doc GATE
- Data Structure Unit 5
- 66-gallager
- Modelo Jerarquico
- ecilmodelpaper
- AVL TREE

Você está na página 1de 67

BECOME STRONGER AND

BETTER.

TREES

Table of Contents

1) Introduction to Trees

Tree Terminology

Trees Properties

2) Binary Trees

Complete Binary Trees

Extended Binary Trees

3) Memory Representation

Sequential

Linked

4) Binary Tree Traversal

Pre-order

In-order

Post-order

5) Traversal Algorithms using Stacks

President-CEO

Production

Manager

Personnel

Manager

Purchasing

Supervisor

Warehouse

Supervisor

Sales

Manager

Shipping

Supervisor

Definition of Tree

A tree is a finite set of one or more nodes

such that:

There is a specially designated node called

the root.

The remaining nodes are partitioned into n>=0

disjoint sets T1, ..., Tn, where each of these sets is

a tree.

We call T1, ..., Tn the subtrees of the root.

Tree Terminology

Terminology

The degree of a node is the number of subtrees

of the node

The degree of A is 3; the degree of C is 1.

The node with degree 0 is a leaf or terminal

node.

A node that has subtrees is the parent of the

roots of the subtrees.

The roots of these subtrees are the children of

the node.

Children of the same parent are siblings.

The ancestors of a node are all the nodes

along the path from the root to the node.

The top element: root

Except the root, each element

has a parent

Each element has 0 or more

children

Ancestors of u

Descendants of u

Level Number

Each node in a binary tree T is assigned a Level

Number.

The root R of the tree T is assigned a level number 0.

Every other node is assigned a level number which is

one more than the level number of its parent.

The nodes with the same level number are said to

belong to the same generation.

Level: 0

A

B

C

E

D

F

Level: 1

Level: 2

Level: 3

The Depth (or Height ) of the tree T is the maximum

number of nodes in a branch of T.

The Height of a node in a tree is the length of a longest

path from a node to a leaf.

The Depth of a node is the length of the unique path

from the root to that node.

Height and Depth of a tree are symmetrical (equal), i.e.

Height of a tree is maximum depth of one of its leaves.

The depth of a node and the height of a node are not

necessarily equal.

Node E has height 2,

Node K has height 1,

Node E has Depth 3

Node K has Depth 4

Exercise

Number of Nodes

Degree of a node(shown by green number)

Leaf node(terminal)

Non terminal nodes

Parent

Children

2

Sibling

Ancestor

2

0

Descendant

Level of a node

0

0

Height(depth) of a tree

Level

0

3

1

1

0

Exercise to do

A

Property

Number of nodes

Height

Root Node

Leaves

Interior nodes

Number of levels

Ancestors of H

Descendants of B

Siblings of E

Degree of node A

Value

Binary Trees

Binary Trees

A Binary Tree T is defined as a finite set of elements, called

nodes , such that:

a) T is empty (called null tree or empty tree) or

b) T contains a distinguished node R, called the root of T,

and the remaining nodes of T form an ordered pair of

disjoint binary tree T1(left subtree) and T2(right subtree).

[This definition of the binary tree is recursive. ]

Any node in Binary tree T has either 0,1 or 2 successors. i.e.

A special class of trees: max degree for each node is 2

Example

A

B

C

L

M

J

A binary tree can be empty whereas a tree cannot be

empty.

Each element in binary tree has at most two sub trees

whereas each element in a tree can have any number of

sub trees

The sub trees of each element in a binary tree are

ordered. That is we can distinguish between left and

right sub trees. The sub trees in a tree are unordered.

Skewed Binary Tree: If every node in a tree has only one child (except the Leaf

node), then we call such trees Skew Trees. If every node has only left child then we

call them as Left skew trees. Similarly, if every node has only right child then we

call them right skew trees.

C

D

Skewed Tree

The tree T is said to be

complete if all its levels,

except possibly the last, have

the maximum number of

possible nodes, and if all the

nodes at the last level appear

as far left as possible.

A binary tree T is said to be a 2-tree or an extended binary tree if each node

N has either 0 or 2 children.

The nodes with 2 children are called internal nodes.

A

The external and

circles for internal nodes and squares for external nodes.

B

B

C

D

F

G

G

The maximum number of nodes on level i of a

binary tree is 2i, i>=0.

The maximum number of nodes in a binary

tree of depth k is 2k-1, k>=1.

A full binary tree of depth k is a binary tree of depth k

having 2k-1 nodes, k>=0.

A binary tree with n nodes and depth k is

complete iff its nodes correspond to the nodes numbered

from 1 to n in the full binary tree of depth k.

A

A

B

D

H

E

I

C

F

D

I

G

M

If a complete binary tree with n nodes

(depth=log n + 1)

is represented sequentially,

then for any node with index i, 1<=i<=n, we have:

parent(i) is at i/2 if i!=1. If i=1, i is at the root and

has no parent.

leftChild(i) is at 2i if 2i<=n. If 2i>n, then i has no

left child.

rightChild(i) is at 2i+1 if 2i+1<=n. If 2i+1>n,

then i has no right child.

Binary trees are represented using two ways:

Sequential Representation (using Single Array)

Linked Representation (using Linked Lists)

direct access to the root R of T and given any node N of T, one should have

direct access to the children of N. ]

Sequential Representation

This representation uses only a single linear array TREE as

follows:

The root R of T is stored in TREE[1].

If a node N occupies TREE[K], then its left child is

stored in TREE[2*K] and its right child is stored in

TREE[2*K+1].

oNULL is used to indicate an empty sub tree.

oIn particular, TREE[1]=NULL indicates that the tree is

empty.

1. No need to store left and right pointers in the nodes

2. Direct access to nodes: to get to node k, access A[k]

TREE

1 45

45

2 22

3 77

4 11

5 30

6

7 90

22

77

9 15

10 25

11

12

11

30

90

13

14 88

15

16

.

.

15

25

88

.

29

save memory

tree requires numbering of nodes; starting with nodes on

level 1, then on level 2 and so on. The nodes are

numbered from left to right .

It is an ideal case for representation of a complete binary

tree and in this case no space is wasted. However for

other binary trees, most of the space remains unutilized.

As can be seen in the figure, we require 14 locations in

array even though the tree has only 9 nodes. If null entries

for successors of the terminal nodes are included, we

would actually require 29 locations instead of 14.Thus

sequential representation is usually inefficient unless

binary tree is complete or nearly complete

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

T is complete or nearly complete.

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

.

[16]

(2) insertion/deletion

problem

A

B

-C

----

B

D

-.

E

A

B

C

D

E

F

G

H

I

Linked Representation

Tree T will be maintained in memory by means of a linked

Representation which uses three parallel arrays, INFO,

LEFT and RIGHT, and a pointer variable ROOT.

2. LEFT[K] contains the location of the left child of

the node N

3. RIGHT[K] contains the location of the right child

of node N.

Data

left

right

Linked Representation

Pointer variable ROOT contains the location of

the root R of T.

If the tree T ids empty, then ROOT will contain

the null value.

If any subtree of the tree is empty, then the

corresponding pointer will contain the null

value.

left

data

right

Exercise

Construct a Binary tree using Linked Representation

Root

INFO

LEFT

RIGHT

14

Avail

10

17

18

13

19

10

11

12

13

12

14

15

15

16

16

11

17

18

19

20

20

There are three standard ways of traversing a

binary tree T with root R.

These three algorithms, called:

Preorder

Inorder

Postorder

Preorder

1. Process the root R.

2. Traverse the left subtree of R in preorder.

3. Traverse the right subtree of R in preorder.

Inorder

1. Traverse the left subtree of R in inorder.

2. Process the root R.

3. Traverse the right subtree of R in inorder.

Postorder

1. Traverse the left subtree of R in postorder.

2. Traverse the right subtree of R in postoder.

3. Process the root R.

Preorder

a

b

c

a b c

2. Traverse the left subtree of R in preorder.

3. Traverse the right subtree of R in preorder.

Preorder Example

a

b

c

e

d

g

a b d g h e i

c f

/

*

e

+

a

* + a b -

c d + e

Inorder Example

a

b

c

b a c

2. Process the root R.

3. Traverse the right subtree of R in inorder.

Inorder Example

a

b

c

e

d

g

g d h b e i

a f

/

*

e

+

a

d /

Postorder Example

a

b

c

b c a

2. Traverse the right subtree of R in postoder.

3. Process the root R.

Postorder Example

a

b

c

e

d

g

g h d i

e b j

c a

/

*

e

+

a

a b + c d -

* e f

1

3

Preorder:

1 3 5 4 6 7 8 9 10 11 12

Inorder:

4 5 6 3 1 8 7 9 11 10 12

Postorder:

4 6 5 3 8 11 12 10 9 7 1

5

4

9

10

6

11

12

Assume: visiting a node

15

Preorder: 15 8 2 6 3 7

Inorder: 2 3 6 7 8 10 11

Postorder: 3 7 6 2 10 14

12 11 8 22 30 27 20 15

6 10 12

3

27

11

11 10 12 14 20 27 22 30

12 14 15 20 22 27 30

20

22

14

30

+

preorder traversal

+**/ABCDE

prefix expression

inorder traversal

A/B*C*D+E

infix expression

postorder traversal

AB/C*D*E+

postfix expression

Some Examples

a

preorder = ab

b

inorder = ab

b

b

a

postorder = ab

b

b

a

level order = ab

a

a

a

b

Can you construct the binary tree, given

two traversal sequences?

Depends on which two sequences are

given.

Inorder and Preorder Sequence

Inorder Sequence : D B E A F C

Preorder Sequence : A B D E C F

preorder: F A E K C D H G B

inorder: E A C K F H D B G

Solution: The tree is drawn from the root as follows:

(a) The root of tree is obtained by choosing the first node of

preorder. Thus F is the root of the proposed tree

(b) The left child of the tree is obtained as follows:

(a) Use the inorder traversal to find the nodes to the left and right of the

root node selected from preorder. All nodes to the left of root node(in

this case F) in inorder form the left subtree of the root(in this case E A

CK)

(b) All nodes to the right of root node (in this case F ) in inorder form the

right subtree of the root (H D B G)

(c) Follow the above procedure again to find the subsequent roots and

their subtrees on left and right.

Nodes on right subtree(right of F):H D B G(from inorder)

The root of left subtree:

From preorder: A E K C , Thus the root of left subtree is A

D H G B , Thus the root of right subtree is D

Creating left subtree first:

From inorder: elements of left subtree of A are: E (root of left)

elements of right subtree of A are: C K (root of right)

Thus tree till now is:

F

A

E

D

K

The root node is D

From Inorder, the nodes on the left of D are: H (left root of D)

the nodes on the right of D are: B G (right root of D)

Thus the tree is:

F

inorder = g d h b e i a f j c

preorder = a b d g h e i c f j

Scan the preorder left to right using the inorder to

separate left and right subtrees.

a is the root of the tree; gdhbei are in the left

subtree; fjc are in the right subtree.

a

gdhbei

fjc

a

gdhbei

fjc

Preorder = a b d g h e i c f j

b is the next root; gdh are in the left

subtree; ei are in the right subtree.

a

b

gdh

fjc

ei

a

b

gdh

fjc

ei

preorder = a b d g h e i c f j

d is the next root; g is in the left subtree;

h is in the right subtree.

a

fjc

b

d

g

ei

h

separate left and right subtrees.

inorder = g d h b e i a f j c

postorder = g h d i e b j f c a

Tree root is a; gdhbei are in left subtree; fjc are in

right subtree.

Algorithm 9: PREORD(INFO, LEFT, RIGHT, ROOT)

The algorithm does a preorder traversal of Binary tree T, applying an operation PROCESS to

each of its nodes. An array STACK is used to temporarily hold the addresses of nodes.

1. Set TOP:= 1, STACK[1]:= NULL and PTR := ROOT.

2. Repeat Steps 3 to 5 while PTR != NULL:

3. Apply PROCESS to INFO[PTR].

4. [Right Child?]

If RIGHT[PTR]!= NULL then

Set TOP := TOP+1, and STACK[TOP]:= RIGHT[PTR].

[end of If structure]

5. [Left Child?]

If LEFT[PTR]!= NULL then

Set PTR:= LEFT[PTR].

Else

Set PTR:= STACK[TOP] TOP:= TOP-1.

[End of If structure]

[End of step 2 Loop]

6. Exit.

This is simulation of above algorithm showing contents of stack

1. Initially push NULL onto the STACK:

STACK =

Then set PTR :=A, the root of T.

2. Proceed down the left most path rooted at PTR = A as

follows:

(i) Process A and push its right child C onto Stack:

STACK: , C

(ii) Process B (There is no Right Child)

(iii) Process D and push its right child H onto STACK:

STACK: , C, H

(iv) Process G (There is no Right Child)

No other node is processed, since G has no left child.

3. [Backtracking] Pop the top Element H from STACK, and Set

PTR = H. This leaves STACK: , C

Since PTR NULL, return to step (a) of the algorithm.

4. Proceed down to the left-most path rooted at PTR= H as

follows:

(v) Process H and push its right child K onto STACK:

STACK: , C, K

5.[Backtracking] Pop K from STACK, and set PTR:= K. This

leaves :

STACK: , C

E

H

k

(vi) Process K. (There is no right child)

No other node is processed, since K has no left child.

7. [Backtracking] Pop C from Stack, and set PTR := C. This leaves:

STACK:

Since PTR NULL, return to Step (a) of the algorithm.

8. Proceed down the left most path rooted at PTR = C as follows:

(vii) Process C and push its right child F onto STACK:

STACK: , F

(viii) Process E. (There is no right child)

9. [Backtracking] Pop F from STACK, and set PTR :=F, This leaves

STACK:

10. Proceed down the left-most path rooted at PTR :=F as follows:

(ix)Process F.

No other node is processed, since F has no left child.

11. [Backtracking] Pop the top element NULL from STACK, and set PTR:=

NULL.

Since PTR=NULL, the algorithm is completed.

As seen from the steps 2, 4, 6, 8 and 10, the nodes are processed in order A,

B, D, G, H, K, C, E, F. This is required preorder traversal.

Algorithm 9: INORD(INFO, LEFT, RIGHT, ROOT)

The algorithm does a inorder traversal of Binary tree T, applying an operation PROCESS to

each of its nodes. An array STACK is used to temporarily hold the addresses of nodes.

1. Set TOP:= 1, STACK[1]:= NULL and PTR := ROOT.

2. Repeat while PTR != NULL:

a) Set TOP:=TOP+1, STACK[TOP]:=PTR.

b) Set PTR:= LEFT[PTR].

[End of loop]

3. Set PTR:=STACK[TOP], TOP:=TOP-1.

4. Repeat Steps 5 to 7 while PTR != NULL:

5. Apply PROCESS to INFO[PTR].

6. If RIGHT[PTR]!= NULL, then:

a) Set PTR:=RIGHT[PTR]

b) Go to Step 2.

[End of If structure]

7. Set PTR:=STACK[TOP] and TOP:=TOP-1.

[End of step 4 Loop.]

8. Exit

Algorithm 9: POSTORD(INFO, LEFT, RIGHT, ROOT)

The algorithm does a postorder traversal of Binary tree T, applying an operation PROCESS to

each of its nodes. An array STACK is used to temporarily hold the addresses of nodes.

1.

2.

3.

4.

Repeat Step 3 to 5 while PTR!=NULL:

Set TOP := TOP+1, STACK[Top]:=PTR.

If RIGHT[PTR]!=NULL, then:

Set TOP := TOP+1, Stack[Top]:=-RIGHT[PTR].

[End of If structure]

5. Set PTR:=LEFT[PTR]

[End of step 3 Loop]

6. Set PTR:=STACK[Top], TOP := TOP-1.

7. Repeat while PTR>0:

a)Apply PROCESS to INFO[PTR].

b)PTR:=STACK[Top], TOP := TOP-1.

[End of Loop]

8. If PTR<0, then:

a) Set PTR:= -PTR.

b) Go to Step 2.

[End of If structure]

9. Exit.

E

C

Tree T1

G

Tree T2

D

Tree T3

Tree T4

trees is same.

2) Tree T1 and T3 is said as Copy Tree because along with structure ,

content(data) part of both trees are same.

3) Tree T1 and Tree T4 are neither similar nor Copy tree.

Exercise

Q1: The post order traversal of a binary tree is 452631. Find out the pre

order traversal

a. 126345

b. 142653

c. 124536

d. 124356

Q2: The inorder and preorder traversals of a binary tree are d h b e f c I g j

and a b d h e c f g I j respectively. The Post order traversal is

a) h d e b f i j g c a

b) d h e b i j g f c a

c) e h d b f i j g c a

D) h e d b f i j g a c

- Ai Lecture 2Enviado porkiran
- unit 2 dsEnviado porNivitha
- UNIT III part 1.pptxEnviado porJayakumar Loganathan
- Slicing and Non Slicing Floor PlanningEnviado porSurbhi Singh
- MGS3100_Slides8bEnviado porPranav Goswami
- go-quesEnviado poranurag.it.jolly8786
- BinarySearchAVLTree.javaEnviado porAnimesh Shaw
- Datastructure QuestionsEnviado por7killers4u
- Unit4 Binary TreeEnviado porJigar Agarwal
- Character Based Method -Unit 1 CMBEnviado porKarthika
- CPE311 TreesEnviado porJaspher Jan Pasol
- ProgramsEnviado porAruna Isukapatala
- TreesEnviado porShridhar Doddamani
- Pranav TechnologyEnviado porNaman Kumar Sinha
- Cs1997 Sureshkumar.doc GATEEnviado porAnonymous 8pCXXs
- Data Structure Unit 5Enviado porRaj Sharma
- 66-gallagerEnviado porDedaniel Urribarri
- Modelo JerarquicoEnviado porKaren Annet Saldaña Hernandez
- ecilmodelpaperEnviado porSumit Kumar
- AVL TREEEnviado porAnand Yadav
- BayesCube Manual v30Enviado pors2lumi
- AvlEnviado porAdnan Farooq
- Compact Scan Mask for 3-D Connected Components LabelingEnviado porPhaisarn Sutheebanjard
- Decision ModellingEnviado porStella-Jebas
- Level2 Syllabus for FE V3.0Enviado porMd Jahidul Islam
- Lecture 06Enviado porMrunal Ruikar
- ClassificationEnviado poranurag3069
- Introduction to Decision TreesEnviado porGia Desiré
- MELJUN CORTES ALGORITHM Transform-And-Conquer Algorithm Design Technique IIEnviado porMELJUN CORTES, MBA,MPA
- Tricks of the Trade - Recursion to IterationEnviado porbob

- Interval heapsEnviado pormanishbhardwaj8131
- CS 301 MegaFile Virtual UniversityEnviado porSaleem Maheen
- csc263Enviado porhitman047
- Short Questions on DSEnviado porKattupalli Sudhakar
- Binomial HeapsEnviado porHimanshu Aggarwal
- Stacks Queues TreesEnviado porvince acus
- Optimal Binary Search TreeEnviado porRaghu
- Heap SortEnviado porhermione131911108
- In Order Tree TraversalEnviado porArockiaruby Ruby
- ADT AVL Tree V3Enviado porRishiGupta
- treapsEnviado porDanh Nguyen
- Week16 TreesEnviado porDylan Gray
- Binary TreeEnviado pornabil aldbeeb
- X-Fast and Y-Fast TriesEnviado porhrishipisal
- Algo QuicksheetEnviado porfang
- Binomial heapsEnviado pormanishbhardwaj8131
- Red Black TreesEnviado porVishnu
- Quiz2Enviado porPramod Srinivasan
- Assignment 8Enviado porSonu Parmani
- Estrutura- exercicioEnviado porJuri Lefanov
- AVL-TreesEnviado porAswin Kumar
- final project2 pinanormanEnviado porapi-358841842
- dsa ch6 treeEnviado porapi-394738731
- Chapter 8 - HeapsEnviado porNguyễn Thanh Linh
- Threaded Binary TreesEnviado porVishal Singh
- Advanced Data StructuresEnviado porpramodtripathi7
- DSA Class Test - 2 18042017-AnswersEnviado porpabitra
- 10 陈启峰《Size Balanced Tree》Enviado poryizer
- Splay TreesEnviado porEssirahc Lamigo
- DS Unit 2Enviado porSubathra Devi Mourougane