TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

46
TREES • General trees • Binary trees • Binary search trees • AVL trees • Balanced and Threaded trees.

description

General trees-Definition A tree is a collection of nodes. The collection can be empty; otherwise a tree consists of a distinguish node r, called root, and zero or more non-empty (sub)trees T 1,T 2,T 3,….T K.. A B CDE F G H I K J Each of whose roots are connected by a directed edge from r.

Transcript of TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Page 1: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

TREES• General trees• Binary trees• Binary search trees• AVL trees• Balanced and Threaded trees.

Page 2: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

General Trees.Trees can be defined in two ways :• Recursive• Non- recursive A

B C D E

F G H I

K

J

One natural way to define a tree is recursively

Page 3: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

General trees-Definition • A tree is a collection of nodes. The collection

can be empty; otherwise a tree consists of a distinguish node r, called root, and zero or more non-empty (sub)trees T1,T2,T3,….TK.

.

A

B C D E

F G H I

K

J

Each of whose roots are connected by a directed edge

from r.

Page 4: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

General trees-Definition• A tree consists of set of nodes and set of

edges that connected pair of nodes.

A

B C D E

F G H I

K

J

Page 5: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Eg. A table of contents and its tree representation

Book C1

S1.1S1.2

C2S2.1

S2.1.1S2.1.2

S2.2S2.3

C3

Book

C1 C2 C3

S2.1S1.2S1.1 S2.2 S2.3

S2.1.2S2.1.1

Page 6: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

DegreeThe number of sub tree of a node is called its

degree.Eg. Degree of book

3, C12,C30

Book

C1 C2 C3

S2.1S1.2 S2.2 S2.3

S2.1.2S2.1.1

S1.1

Page 7: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Terminal Nodes and Non Terminal nodes

•Nodes that have degree 0 is called Leaf or Terminal node.Other nodes called non-terminal nodes. Eg.Leaf

nodes :C3,S1.1,S1.2 etc.

Book

C1 C2 C3

S2.1S1.2 S2.2 S2.3

S2.1.2S2.1.1

S1.1

Page 8: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Parent, Children & Siblings •Book is said to be the father (parent) of C1,C2,C3 and C1,C2,C3 are said

to be sons (children ) of book.•Children of the same parent are said

to be siblings.•Eg.C1,C2,C3 are siblings (Brothers)

Book

C1 C2 C3

S2.1S1.2 S2.2 S2.3

S2.1.2S2.1.1

S1.1

Page 9: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Length

Book

C1 C2 C3

S2.1S1.2 S2.2 S2.3

S2.1.2S2.1.1

•The length of a path is one less than the number of nodes in the path.(Eg path from book

to s1.1=3-1=2)

S1.1

Page 10: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Ancestor & Descendent

Book

C1 C2 C3

S2.1S1.2 S2.2 S2.3

S2.1.2S2.1.1

•If there is a path from node a to node b , then a is an ancestor of b and b is

descendent of a.•In above example, the ancestor of S2.1

are itself,C2 and book, while it descendent are itself, S2.1.1 and S2.1.2.

S1.1

Page 11: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Height & Depth•The height of a node in a tree is the length of

a longest path from node to leaf.[ In above example node C1 has height 1, node C2 has

height 2.etc.•Depth : The depth of a tree is the maximum

level of any leaf in the tree.[ In above example depth=3]

Book

C1 C2 C3

S2.1S1.2 S2.2 S2.3

S2.1.2S2.1.1

S1.1

Page 12: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Tree - Implementation :

• Keep the children of each node in a linked list of tree nodes. Thus each node keeps two references : one to its leftmost child and other one for its right sibling.

Left Data Right

Page 13: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Left child -Right sibling representation of a tree

A

BC

D E

GF

Page 14: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

A

B C D

F G

Page 15: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Data structure definition

Class Treenode{Object element;Treenode leftchild;Treenode rightsibling;}

Page 16: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

An application :File system

There are many applications for trees. A popular one is the directory structure in many common operating systems, including VAX/VMX,Unix and DOS.

Page 17: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Binary trees

• A binary tree is a tree in which no nodes can have more than two children.

• The recursive definition is that a binary tree is either empty or consists of a root, a left tree, and a right tree.

• The left and right trees may themselves be empty; thus a node with one child could have a left or right child. We use the recursive definition several times in the design of binary tree algorithms.

Page 18: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

• One use of the binary tree is in the expression tree, which is central data structure in compiler design.

- d

b c

+

a *

(a+((b-c)*d))

The leaves of an expression tree are operands, such as constant, variable

names. The other nodes contain operators.

Eg :

Page 19: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Tree traversal-iterate classes.

The main tree traversal techniques are:

Pre-order traversalIn-order traversalPost-order traversal

Page 20: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Pre-order traversal

To traverse a non-empty binary tree in pre-order (also known as depth first order), we perform the following operations.Visit the root ( or print the root)Traverse the left in pre-order (Recursive)Traverse the right tree in pre-order (Recursive)

Page 21: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Pre-order traversal

Pre-order list –1,2,3,5,8,9,6,10,4,7

1

2 43

5 6

8 9 10

7

Visit the root ( or print the root)Traverse the left in pre-order (Recursive)

Traverse the right tree in pre-order (Recursive)

Page 22: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

In-order traversal1

2 43

5 6 7

8 9 10

Pre-order list –2,1,8,5,9,3,10,6,7,4

•Traverse the left-subtree in in-order

•Visit the root•Traverse the right-subtree in in-

order.

Page 23: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

post-order traversal1

2 43

5 6 7

8 9 10

Pre-order list –2,8,9,5,10,6,3,7,4,1

•Traverse the left sub-tree in post-order•Traverse the right sub-tree in post-order

•Visit the root

Page 24: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Properties of binary trees.•If a binary tree contains m nodes at level L, then it contains at most 2m nodes at level L+1.•A binary tree can contain at most 2L nodes at LAt level 0 B-tree can contain at most 1= 20 nodesAt level 1 B-tree can contain at most 2= 21 nodes At level 2 B-tree can contain at most 4= 22

nodes At level L B-tree can contain at most 2L nodes

Page 25: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Complete B-tree• A complete B-tree of depth d is the B-tree

that contains exactly 2L nodes at each level between 0 and d ( or 2d nodes at d)

Complete B-treeNot a Complete B-tree

Page 26: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

The total number of nodes (Tn) in a complete binary tree of depth d is 2d+1-1

• Tn=20+21+22+……2d…..(1)• 2Tn=21+22+…… 2d+1….(2)• (2)-(1)• Tn=2d+1-1

Page 27: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary TreesGiven a binary tree with n nodes, the total number of links in the tree is 2n.

Each node (except the root) has exactly one incoming arc only n - 1 links point to nodes remaining n + 1 links are null.

One can use these null links to simplify some traversal processes.

A threaded binary search tree is a BST with unused links employed topoint to other tree nodes. Traversals (as well as other operations, such as backtracking)

made more efficient.

A BST can be threaded with respect to inorder, preorder or postordersuccessors.

Page 28: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary TreesGiven the following BST, thread it to facilitate inorder traversal:

The first node visited in an inorder traversal is the leftmost leaf, node A.

Since A has no right child, the next node visited in this traversal is itsparent, node B.

Use the right pointer of node A as a thread to parent B to make backtrackingeasy.

H

E

B

K

F J L

A D M

C

IG

Page 29: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary Trees

The thread from A to B is shown as the arrow in above diagram.

H

E

B

K

F J L

A D M

C

IG

Page 30: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary TreesThe next node visited is C, and since its right pointer is null, it also can beused as a thread to its parent D:

H

E

B

K

F J L

A D M

C

IG

Page 31: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary TreesNode D has a null right pointer which can be replaced with a pointer to D’sinorder successor, node E:

H

E

B

K

F J L

A D M

C

IG

Page 32: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary TreesThe next node visited with a null right pointer is G. Replace the null pointerwith the address of G’s inorder successor: H

H

E

B

K

F J L

A D M

C

IG

Page 33: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Binary TreesFinally, we replace:

first, the null right pointer of I with a pointer to its parentand then, likewise, the null right pointer of J with a pointer to its parent

H

E

B

K

F J L

A D M

C

IG

Page 34: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Example

Amir Kamil 8/8/02 34

8

753

11

13

1

6

9

Page 35: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

• We start at the leftmost node in the tree, print it, and follow its right thread

• If we follow a thread to the right, we output the node and continue to its right

• If we follow a link to the right, we go to the leftmost node, print it, and continue

Amir Kamil 8/8/02 35

Page 36: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 36

8

753

11

13

1

6

9

Start at leftmost node, print it

Output1

Page 37: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 37

8

753

11

13

1

6

9

Follow thread to right, print node

Output13

Page 38: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 38

8

753

11

13

1

6

9Follow link to right, go to leftmost node and print

Output135

Page 39: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 39

8

753

11

13

1

6

9

Follow thread to right, print node

Output1356

Page 40: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 40

8

753

11

13

1

6

9Follow link to right, go to leftmost node and print

Output13567

Page 41: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 41

8

753

11

13

1

6

9

Follow thread to right, print node

Output135678

Page 42: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 42

8

753

11

13

1

6

9Follow link to right, go to leftmost node and print

Output1356789

Page 43: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 43

8

753

11

13

1

6

9

Follow thread to right, print node

Output135678911

Page 44: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Traversal

Amir Kamil 8/8/02 44

8

753

11

13

1

6

9Follow link to right, go to leftmost node and print

Output13567891113

Page 45: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Modification

• We’re still wasting pointers, since half of our leafs’ pointers are still null

• We can add threads to the previous node in an inorder traversal as well, which we can use to traverse the tree backwards or even to do postorder traversals

Amir Kamil 8/8/02 45

Page 46: TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.

Threaded Tree Modification

Amir Kamil 8/8/02 46

8

753

11

13

1

6

9