- 在线时间
- 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>
1 ?2 t3 Z1 `) z6 T; o/ u#include <stdlib.h>
0 t9 D( W7 p; y& n% h9 f' }#include <malloc.h>
: p8 u2 q; t2 g( w' v1 H+ Y* v3 g" O2 r: r) [& Z
: y" n5 K* ^, [& f; m5 P. `1 s
< >typedef struct bitnode& }. P i0 ], u6 D& D* M
{
% D6 u; @$ {% ?( n char data;
# V& @/ n. ]3 O/ q/ G struct bitnode *lchild, *rchild;
; v5 L' u! r+ c& y# b/ ]}bitnode, *bitree;</P>1 j; L( I5 d) b, H# ?0 K: T
< >void createbitree(t,n)
3 R. m: a, |. ~2 E7 dbitnode ** t;; P5 `) O3 H2 x# D
int *n;; g6 s9 _5 Z9 l2 q7 V) V
{
3 n' Z- ]$ C* U" F% v: M0 E$ v7 e2 u u char x;" k2 W1 H" j& P, o1 C6 u @
bitnode *q;
0 l1 {$ D8 q/ W% M6 ?- s4 R9 V# e *n=*n+1;9 E3 J$ {: Y. @7 G' ^. v( B
printf("\n Input %d DATA:",*n);8 P# I& {* v8 r4 a# a5 b
x=getchar();
5 s& f8 j8 N9 T4 S if(x!='\n')# ~& L# p* a0 l& E: l# s% b2 S
getchar();: H% d! }$ s- U5 g, d" g
if (x=='\n')
2 O8 z, \* Q* j8 G+ V return;2 F4 ]" t/ V5 j) l. I
q=(bitnode*)malloc(sizeof(bitnode));
! \) E1 N8 @0 e: S1 |9 p: f, ~8 A q->data=x;
# M( L8 Y8 Z8 C6 _( Q3 W' U q->lchild=NULL;
! z" a6 }& C" ?- K0 ~$ Q q->rchild=NULL;
7 r4 f7 H; t$ h0 L8 | *t=q;/ w1 d; H& ^: w5 v4 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);5 p/ C* b. h" }5 a+ c
createbitree(&q->lchild,n);
, b/ Z! x: c+ e- L createbitree(&q->rchild,n);
" v4 P) b( J8 @1 i- h return;& E5 x: M) v9 f8 o
}</P>
" ^2 {9 }2 v" \< >void visit(e)$ r1 t0 m) N0 `+ [
bitnode *e;# k. @0 S' }; V5 M0 P ~
{! {+ ?9 L6 r0 N1 N& ?5 x
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
/ g7 T+ O1 J" v3 z' k* S1 Z2 e}</P> H% E2 Z* d# c0 x* v! d/ M( {! i
< >void preordertraverse(t)2 G/ d! x+ ?& C7 j( W6 @
bitnode *t;
& H: Z4 b" a) ?6 C; o0 P8 ^{
* z1 Y& Y) ^& n s if(t)
5 Y6 X, U% w5 c4 E/ K! f$ m {& k( `3 ?' n% j8 S2 ^7 @" W1 v
visit(t);
1 @8 U7 Y0 K: C* G" ]0 i. p preordertraverse(t->lchild);
) R8 p, c( p2 P0 c& D preordertraverse(t->rchild);
- Y# I [ I5 ]0 u+ G, P return ;1 m* c$ n) ~ t4 z) ]
}
~' C, i0 u7 P. V x5 i3 h! D$ i else0 r- B0 g" g1 Y6 K) n
return ;- H' y2 l) b% c0 P$ ^ s0 R
}</P>+ i% c; V" U( O/ f6 I! i
< >void countleaf(t,c)
, d( ~& b4 W" ^5 h+ ?bitnode *t;4 Z, K& X, r- I
int *c;, {: P( A3 y5 `8 J. p
{ p, q& ?8 b8 r, c8 D2 A
if(t!=NULL)
: e* t& L, e6 ?5 k& Z. T {2 E$ t _9 j5 e- W. A1 X: x8 z
if (t->lchild==NULL && t->rchild==NULL)
: u9 K( o1 Y9 N/ s* k {
; R. b4 `2 r& Q' `# Z; @ *c=*c+1;
- u* L7 L4 E/ F0 t }# W' z8 o2 j& n
countleaf(t->lchild,c);& N. Z" ~7 Z* D! k% y6 n6 v
countleaf(t->rchild,c);
3 a+ q% V9 V9 H6 N# s- E$ T) ` }
1 X+ [9 [, I7 z1 E) M return;2 n e6 Z% [; T! A5 n
}</P>
& e4 k4 f( w/ G$ D< >int treehigh(t); V. L0 ?& K. ?9 M" g3 D/ G c
bitnode *t;
. p6 x2 l I7 t8 I{
) l! w) \" R+ |2 d3 K int lh,rh,h;' ?2 o: e0 J$ i1 V; T5 d
if(t==NULL)
7 G; }4 s6 ]" I D; m: M h=0;
$ H2 [, ]! Y9 X* x u) T. P2 Y else
5 ^$ R- T1 z6 k- }+ C {" g" J. o |; }
lh=treehigh(t->lchild);1 R2 ? F( U3 G2 ] D. A, @9 l
rh=treehigh(t->rchild);
% Z* d y1 H. s* P/ E D# V9 H5 \3 q h=(lh>rh ? lh:rh)+1;
* x8 {! ?- v/ o% e4 L! p }& P* _& q1 H- H3 H
return h;5 [. ]7 d4 P" `' d7 s H
}</P>
2 S4 W! Q8 n6 i* R< >main()
+ |/ B6 R% K, E$ I. `0 U: _- I{
; \' v( h, [$ k6 b% C bitnode *t; int count=0;- r7 [" b: `0 H5 r9 ~* p& t
int n=0;
/ d' ^0 G6 | t printf("\n Please input TREE Data:\n");
$ P( H5 k' W. \8 v, l" a1 z* Y createbitree(&t,&n);. t d X8 _% n% O6 S+ L
printf("\n This is TREE Struct: \n");
) O$ K, }$ ]) A Q, F4 T preordertraverse(t);6 I- }4 g; @6 o- C4 J
countleaf(t,&count);7 s( O# A: d6 j& J0 \/ N9 T
printf("\n This TREE has %d leaves ",count);
3 e8 Y$ B+ a3 e) b; X printf(",High of The TREE is: %d\n",treehigh(t));
8 u7 ^5 o- f$ `4 C- c0 h' L}</P> |
zan
|