- 在线时间
- 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>+ }, ~* w3 \7 O
#include <stdlib.h>+ P( L& p B* q" F: }
#include <malloc.h>
t2 L( u' l0 R3 A6 P2 _7 S
& K4 q8 Y8 @, H# k
/ A d/ _5 T9 Z1 v. V: m$ ?< >typedef struct bitnode5 `. ?0 s( ?# J/ v" i, _
{
9 x$ p4 y1 V/ C, j$ v char data;
2 z, g; e0 I( r3 ~& G% U1 ^ struct bitnode *lchild, *rchild;
8 o: b3 Q9 s t8 k}bitnode, *bitree;</P>
3 S Z8 t, e+ T# X7 M< >void createbitree(t,n)
5 r* m' J' F9 e/ R$ G, }9 t6 r0 Vbitnode ** t;) _2 @; F! U6 P9 O. [ j1 k
int *n;
0 O& g$ d# g$ a& _ m3 e: z{
% V* s2 S+ n( I0 f; b8 ? char x;
+ p: X2 T1 ~; a. I. g0 k bitnode *q;
% H! ^6 e( e/ u/ C *n=*n+1;
; Q! I/ i7 _, ]7 [0 N. ? printf("\n Input %d DATA:",*n);
O+ v% |# Z, o5 Z" z h x=getchar();/ X: y- \+ H. L: o
if(x!='\n')! y2 h7 [% ]( U8 f
getchar();
4 _1 d+ g+ @) i2 O* } if (x=='\n')
4 P( E# h- m2 U# V return;
# @0 |8 V9 _! w4 q$ S q=(bitnode*)malloc(sizeof(bitnode));
Q3 n' b( s3 A' L q->data=x;
2 l4 U2 f0 z/ i9 N- r6 H/ _ q->lchild=NULL;
/ w; c$ @0 y% P# J5 P q->rchild=NULL;& N1 b# v! C" u8 u( I2 h
*t=q;
$ }) V2 c+ r* | printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);$ |8 k7 c `$ a8 L* c% h6 Y
createbitree(&q->lchild,n);4 [" p6 e8 Z; v; p/ M
createbitree(&q->rchild,n);& U- B/ n$ `, ]0 c. c
return;# ?- W# t+ T; ]7 p0 [ h
}</P>8 L. c) z$ G9 N6 P7 q0 b
< >void visit(e)6 a0 @. T0 n' ?( G: z
bitnode *e;8 p" j% N& ^5 Y
{
: _9 u; j& `1 w8 R printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);# u l* m2 N& k3 A7 S* v! K4 A
}</P>. Q/ _: `3 }. M$ ^3 u
< >void preordertraverse(t)
% P, }' z9 |. e ~9 X& Mbitnode *t;
1 v0 m" V$ ]3 U4 R9 Y& [" u. e{
9 N' D) w/ j, k/ J5 V/ q if(t)
# W- J4 l7 ~# F, D3 f" [! L {3 ~ @6 i# c0 ~3 Z
visit(t);
3 n7 k4 t( ^' g4 A1 l5 D preordertraverse(t->lchild); y2 g8 f" _+ ^5 p
preordertraverse(t->rchild);
8 x. b- @/ U- ~; N2 Q return ;
1 {; l0 a, C% [" j; U/ Z }
! |. u. I- q+ w$ {9 Z else b; i! P; q! y K5 f) {
return ;
* h9 u, i- a& p}</P>
% [0 Q7 J& C" ^* u6 p; Z; x; E< >void countleaf(t,c)/ Y7 x0 g, i: w+ ~+ w
bitnode *t;
; T5 O+ M x% N4 s6 kint *c;; `# j" b- j( `$ [) N" B& D2 F" s
{
2 k7 m* a& v$ B3 d if(t!=NULL)
- h3 \' K6 C% x, B) J9 _6 k; \5 v2 F% i {( l; Y. I: z# O& f
if (t->lchild==NULL && t->rchild==NULL)6 i/ }1 W0 g* k8 r6 K
{- z9 H) \0 } Y; O _( a
*c=*c+1;1 w4 ]& p3 P& M
}
5 m) s& i+ H% O" o! O+ k$ T countleaf(t->lchild,c);; I/ u$ y5 v+ e' c1 b" n
countleaf(t->rchild,c);, t- u! w& h0 g
}. ~9 \" ~9 L% \* U- U
return;
! b8 w3 d4 F' A2 W}</P>9 J% a3 s/ W+ w6 F2 v6 V7 @
< >int treehigh(t)
, E% J* m& `7 n5 S5 a( G% S8 L5 k* }" Ybitnode *t;
0 X- S' _9 @+ x4 j& p{7 S" r' ]; Y# m7 o' H
int lh,rh,h;
* X: o5 R# X3 ~% u' a if(t==NULL)) g/ j- p& h* h; \" ~3 G9 n7 k4 ` `
h=0;
O2 l1 Z! E" z5 H else! h# f; C7 h5 g1 s r2 e7 a; N7 X) ?
{* i$ [1 Q& w) o+ N) ?
lh=treehigh(t->lchild);
3 d0 o' Z4 s! l9 ^# {! | rh=treehigh(t->rchild);5 w0 E6 @0 G' v9 z
h=(lh>rh ? lh:rh)+1;
5 @5 j5 C4 ]# X5 \" E }
9 x, n6 v x: m& }: T: b' m return h;# _: q" B/ L9 @( K. v3 x2 o
}</P>
/ A/ c, V, x$ a3 ?< >main()6 @; `6 ]# m% o4 {
{
4 G8 n% L5 `& [7 q5 m- R bitnode *t; int count=0;' r6 j7 h: t5 u) q4 `, J
int n=0;
* S! M' I1 F$ Z: }) Y y printf("\n Please input TREE Data:\n");
m w* L* z5 @% }: p p% f createbitree(&t,&n);; A$ A0 l5 p6 V9 |
printf("\n This is TREE Struct: \n");
4 H; l$ |! Y6 H4 ^6 {, n6 x preordertraverse(t);0 G6 z& S* `! @# V8 N6 c9 F5 ]' C
countleaf(t,&count);* g/ Y% @1 v) U- w( O: R. X
printf("\n This TREE has %d leaves ",count);/ J8 _3 q+ ^/ ?; p8 A1 K7 v$ F
printf(",High of The TREE is: %d\n",treehigh(t));3 P4 y* B. A3 d8 k
}</P> |
zan
|