You are on page 1of 7

Data Structures: Tree

. (Tree)?
z (List)
(Branch)(Hierarchical)
z
1. (Root)
2. n T1 , T2 ,.....Tn
T1 , T2 ,.....Tn (Root) (Sub-tree)
z
(node)

14

(Ancestor) X

Y X Y
(Descendant) Y X
(Parent) X Y
X Y Y X
(Children)

A BCD
BCD A

(Sibling)
(Level)

BCD

(Degree)
(Leaf)

A K
K A

A 3 B 2
JKLGMNI

(Binary
2
Tree)

Data Structure:Tree

. (Binary Tree)

d a ta

le ft

* le ft

T reeN ode

d a ta

* rig h t

rig h t


/* */
/* data */

typedef struct tnode {


char data ;

struct tnode *left, *right; } TNODE;


/* */
/* TNODE */

tree
/* tree */

TNODE *tree;

A
C

B
D

A
B

N u ll

G
N u ll

N u ll

N u ll

N u ll

F
N u ll N u ll

N u ll

Data Structure:Tree

N u ll

1. (PreOrder) (DLR)
L

2. (InOrder) (LRD)
3. (PostOrder) (LRD)

+-+A *B C D /EF

A +B *C -D +E/F

+
A

F
A B C *+D _EF/+

*
B

()
void

InOrder (TNODE *p)

{
if ( p != NULL)
{
InOder(p->left);
printf(%c, p->data);
InOder(p->right);

/* */
/* */
/* */

}
}

Data Structure:Tree

()
void
{

PostOrder (TNODE *p)


if ( p != NULL)
{
PostOder(p->left);
PostOder(p->right);
printf(%c, p->data);

/* */
/* */
/* */

}
}

()
void
{

PreOrder (TNODE *p)


if ( p != NULL)
{
printf(%c, p->data);
PreOder(p->left);
PreOder(p->right);

/* */
/* */
/* */

}
}

Data Structure:Tree


1.
2.

3.

37, 57, 23, 15, 32

1.
57

23

23

37

37
57

23

57

15

57

37

23

57
15

2.
(a.)
(b.)
(c.)

Data Structure:Tree

32 37

57

23

15

3. 15 23

37

57

32

1.
2.

ABCDEFGHIACBJDFEIHG

A+B*5-(-2*D) (1) (2) (3)

A
C

B
D

J
K

1.
2.

1.
2.
3.
4.

a + ( b c / d) * e
(a + b c ) * ( f e * d/ g)
(a + b ) * ( c d ) $ e * f
(a + b ) * (c $ ( d e ) + f) g

Data Structure:Tree

inorder

1.

2.
3.
4.

__________________
(Dense List)()
(root)
3224 57 10 28 43 72 62 inorder
10 (node) list
30
57
root

Data Structure:Tree

1
2
3

10

You might also like