- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
#include <stdio.h>
4 s( \% n4 Z' C4 s9 \#include <stdlib.h># R* X/ x: h; U; p
#include <malloc.h> ; u K7 p6 a, v9 i6 i
* @7 H/ g. c0 _% a9 ^
; u& Y& l9 A4 G; N& E< >typedef struct bitnode5 a3 f9 F2 g+ L7 U& X+ `. E
{
( Q f8 V: }9 d1 o% F* o char data;
$ R! }" U, e& d struct bitnode *lchild, *rchild;1 w' X% w5 C: p) k7 u! x0 n
}bitnode, *bitree;</P>
( }, G% o8 P( ^' S< >void createbitree(t,n)& `! r& ~+ `9 W! v5 ^& P4 I: M( u% ^
bitnode ** t;. f+ S$ c3 A+ x$ [% c
int *n;
& u7 ~/ N1 ?& P6 G{
8 z- y4 ~; i& V' [, v char x;
' y* V) H$ j+ ^( M( I3 n6 U bitnode *q;
9 T# n' W8 Z: A *n=*n+1;
\7 V% p N5 F3 w1 X" T printf("\n Input %d DATA:",*n);4 A& P$ O% g9 u+ a
x=getchar();
5 v5 y. x7 e8 ^. W+ M2 a; m+ j" m1 F if(x!='\n')
9 L. F3 w5 _' R" g. h getchar();
, u- U( a4 _( y, L+ p/ J6 k* N if (x=='\n')7 ?- R* K2 g+ E: t
return;& ]+ i! R5 t4 f: I
q=(bitnode*)malloc(sizeof(bitnode));7 n* |3 A, H1 c& r
q->data=x;' B ^' y- k p2 z. C: p
q->lchild=NULL;; C4 J* f/ P' t% m) E
q->rchild=NULL;* o, Z6 o* O' z+ B" W. D l9 ]8 X
*t=q;
( W2 W: t D. u% B printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
4 O+ u N' I: \$ }$ o7 a createbitree(&q->lchild,n);$ b! [9 Y2 r- B9 I
createbitree(&q->rchild,n);
2 _9 o9 O* L+ C9 w5 X return;
, _ t/ Y8 n5 h" Y}</P>& w4 u+ \& P0 _3 {. o- a, Z
< >void visit(e)4 a( U% Z$ p0 v0 J+ T, I
bitnode *e;2 m% r4 ~; b. b. y4 ]* i/ P7 g
{8 v1 g4 C6 E: w) _' q
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
* a2 d, S& K9 H6 d# j2 S, N( d}</P>
# b# D9 n' i; ~: }/ o! B< >void preordertraverse(t)
0 S/ B2 I, e' Y4 E: Rbitnode *t;
( i' s5 |0 ^* j{6 T7 ?2 D$ ^5 P' Q& l
if(t)( X0 S' @5 t, }
{# @1 O( j& X6 R
visit(t);
4 |* o: s2 h5 z( h7 ^& y( u* P6 b preordertraverse(t->lchild);4 W2 {' H/ [6 z c5 b! m# E
preordertraverse(t->rchild);
( p3 b; H" G( m7 } return ;4 d$ o6 }/ o4 D1 n6 t
}
3 ^3 i s- Z0 `4 i! ]5 i$ X else9 T4 k$ A4 K8 H# T& z! |
return ;
. _7 J4 e! S4 t, {/ |8 v; \}</P>4 J% j/ L, q7 {- E' _
< >void countleaf(t,c)# t: X% r7 m$ u; R* |
bitnode *t; K) K6 x6 g6 \: l( @; B1 S
int *c;
2 j) M! t2 K4 a{% Q# F! X# ^, q! m
if(t!=NULL)6 u u0 v$ F& T, Z3 x
{
- `2 e& Z4 B: j. t! ] if (t->lchild==NULL && t->rchild==NULL)3 M' g/ a3 y: N
{) J5 O0 j: F0 D# l
*c=*c+1;
) V- F( U, {+ Z9 J) [$ _$ _, L }
; H- F e1 u; I5 S. q% Y5 n7 Q. z+ Z countleaf(t->lchild,c);- j* G8 k! N8 z/ w( Z4 a
countleaf(t->rchild,c);) g7 |. Z' e) C% {# G+ h8 N4 R' f- c
}
; M1 E, c" R2 ]) v# l return;
9 V f% Z ~, j K}</P>/ p. Z: m% i7 r8 G/ j$ B
< >int treehigh(t)8 l) m) M4 b- ^7 Z+ Z
bitnode *t;* |0 k8 f7 g* g- a* A3 i
{4 T7 c$ @) m- ?8 ?& d
int lh,rh,h;; b& r8 W2 n7 h. W2 t" W% C
if(t==NULL)& j+ L+ Z% D# L. B6 F. `, m
h=0;, [; C' E- C$ R/ L$ x
else# h' L+ t8 g. k+ I' M; h
{9 J2 q. ~8 g# e- n0 V. F+ R
lh=treehigh(t->lchild);
9 U+ Y; M) `/ p. I4 I X rh=treehigh(t->rchild);' h) h% H" h: _: ^
h=(lh>rh ? lh:rh)+1;, t) ~( T; o( i+ N0 E5 K3 C% g
}4 @2 S9 L5 ?* z8 Z: ?" d9 U' V
return h;
: l Y4 e8 L9 ?& {}</P>3 B% \- n, F8 E& O! w, b
< >main(): h- y) p0 |- P
{/ C) [* `+ K( l3 p* ]8 ]2 y$ r' B
bitnode *t; int count=0;; f: n" x4 n5 {& j( W( t
int n=0;
! Y q$ D; P1 I; m6 ? printf("\n Please input TREE Data:\n");
' A; e: J+ s5 R/ F( e, y" y createbitree(&t,&n);
0 n! T9 `7 `# h printf("\n This is TREE Struct: \n");1 K3 V; U4 Y6 e% j* W
preordertraverse(t);
- s. Q2 b9 n3 X8 ]3 P countleaf(t,&count);* D1 y1 c1 t" A3 V, W% t
printf("\n This TREE has %d leaves ",count);. E6 L. G7 C* H
printf(",High of The TREE is: %d\n",treehigh(t));
! J- [2 w2 ^3 ~/ p. q}</P> |
zan
|