- 在线时间
- 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>
6 g( b: r2 [1 ~$ Q' h. Y/ v l#include <stdlib.h>" s6 F! P3 V7 l3 n2 p- V
#include <malloc.h>
' |: O: U5 P' T I$ D# U0 x4 n3 b/ w% p b
# m* d, }3 `) N& m( i9 Q< >typedef struct bitnode$ }: B1 p/ ~# Y, [$ D5 ~! T
{0 v2 E5 b5 P, E. s
char data;
' I5 ]4 ^: M K1 q struct bitnode *lchild, *rchild;2 M. u) i* g# o: |: \
}bitnode, *bitree;</P>2 g) P8 F% [4 B0 `2 B0 A
< >void createbitree(t,n)
$ I/ [8 a. E- N5 S* W2 s: Nbitnode ** t;7 z6 z) |' T q
int *n;
# q# {4 w4 L* F7 p' V& p/ r{
) F' \. D4 C/ f8 U3 n char x;: ?; \2 a0 X; o. q* j& R
bitnode *q;1 s3 C; \ h* X8 j, v) h
*n=*n+1;" X! i/ a( k9 d
printf("\n Input %d DATA:",*n);
. p1 ]; k9 ^: X2 B1 m! r x=getchar();
. K8 p, N/ x' |2 n if(x!='\n')
, y; ?% z+ t( u* ] getchar();
6 J9 q3 U; K& S+ O+ I if (x=='\n')* J% ?, m2 T1 ~& R" M$ U3 R6 c
return;' ~1 i1 ?7 U0 l0 k2 |' X
q=(bitnode*)malloc(sizeof(bitnode));" \. D. E+ i/ V- h2 V1 B$ u/ a
q->data=x;9 g! d( @6 `( @8 ~1 [
q->lchild=NULL;
. p, \8 [5 x9 r" { q->rchild=NULL;
+ P0 G9 A, }; p' w% S& t *t=q;5 ~# E4 C8 m9 H" }' }1 ]% W; A
printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
2 F9 E: G& R" K createbitree(&q->lchild,n);9 m4 R1 `+ f2 K$ S- P4 p1 `: y
createbitree(&q->rchild,n);6 U4 c7 M( H4 q: w: I% Q! f9 B
return;( ~; m3 j: E- w
}</P>6 D$ D& }4 L. v( n! D
< >void visit(e)! ?3 Y, @2 B: [. r0 y6 U
bitnode *e;5 C" v( Y ^' X( h$ e
{7 p; `7 I! q( r! l; F! k( s
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);2 H+ P3 Z7 v" F' T" k8 B. d2 v/ @
}</P>
+ Y; W6 b; i ?/ t< >void preordertraverse(t)
# g# T* G! n) R! H; E5 Cbitnode *t;
3 J4 ]9 `% G T" q; t) B{% _6 @, `# o& a2 j6 A
if(t)
! k: Q0 u% R$ Q* e X* ~, O6 @% D! n {
) A2 J$ Q! Z3 U( r( U visit(t);! T5 ]) j6 u/ c5 e
preordertraverse(t->lchild);
& x2 e+ V# ?7 K preordertraverse(t->rchild);2 g# t- k3 s" n' ?6 p q; \' _
return ;
/ [3 m% ?4 b8 `0 X% F3 f }
/ b6 R; x( b. |6 p0 f9 y. g else
5 p8 [ ~0 ?6 ]( H7 x return ;
/ I& U9 Z" T7 ] L}</P>" q4 t6 F8 _ X
< >void countleaf(t,c)
1 P! ~, _2 v/ n9 B Zbitnode *t;5 _% S( E5 o! F: ]* a4 b
int *c;7 [7 ? F b$ \' [; u' x
{
" ^( }7 [/ ?" L+ T' }! s/ a8 w if(t!=NULL)
' v# n& Z, A! o$ R2 V: A' e1 R- d5 F {- x: w6 v/ W1 u3 ?$ H
if (t->lchild==NULL && t->rchild==NULL)# k# _. p, F6 r1 A; w
{! f1 e: m c$ A6 y# A% ^: I7 B
*c=*c+1;2 m* h% O9 c+ T: n9 \* s
}
: f* i6 s! d4 B' }) i d9 I- g countleaf(t->lchild,c);
! } E5 L* Z/ m countleaf(t->rchild,c);
: D* v$ m& P6 n) R }
3 Z7 Z; p/ R; r. ?7 g2 j) \ return;
4 i! q2 U6 ^( T8 _5 A}</P>
2 S( _7 n. z4 Y( A< >int treehigh(t)2 w% m0 p9 n8 Y5 ^- A
bitnode *t;
$ ~- g3 m$ b. r9 o{
j. o( H2 x+ s3 l7 h int lh,rh,h;4 Y" e) z# @$ {
if(t==NULL)
* a- I) O* C# M" Y' e h=0;' [ z7 R) [9 r& j! a2 O; [
else
: {& ~9 W, G5 `7 C2 r8 b {9 i# o$ C. @4 X b6 c* C8 a& J
lh=treehigh(t->lchild);) f$ m' E# U( T1 A; {+ \
rh=treehigh(t->rchild);
4 Q% G0 \" u# S4 C* } h=(lh>rh ? lh:rh)+1;' H Y$ C: i; z
}6 V' o# W4 I: F, z, Y) S
return h;
6 @2 k' ` j" R) X: D+ t1 s' o}</P>3 T+ E4 w2 n. q0 m
< >main()
6 r/ z* u" M# r% P+ M5 u{. [; u2 V c F1 W6 x, E r- X- Z
bitnode *t; int count=0;
# L' H: |7 A" s3 h int n=0;
% ^& f( n: d: S' ]" g7 A printf("\n Please input TREE Data:\n");+ |! B' O8 o; K" |+ } ~4 K
createbitree(&t,&n);5 b* e8 S; x7 x4 a
printf("\n This is TREE Struct: \n");
% T9 w0 V1 v/ p w" y preordertraverse(t); L$ h3 a* `! ]1 k2 W
countleaf(t,&count);7 L) P' q$ `; R# ^. s7 I6 f. w/ ~
printf("\n This TREE has %d leaves ",count);- |& C8 F& A. ?" ]4 H; s2 K. J
printf(",High of The TREE is: %d\n",treehigh(t));
4 ^ a1 ^2 \* T' t" R}</P> |
zan
|