- 在线时间
- 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 U" g9 Z( w; R
#include <stdlib.h>
3 \2 A$ `" ^4 z. A#include <malloc.h>
' j4 x) \: m2 P) Y9 J" Y8 h" F* R7 Q; S' i
2 Q) _0 U) P! d& {% X# f
< >typedef struct bitnode
; j2 s* T' H* _2 L" E0 j{# f3 [: P7 ]4 R
char data;3 N7 J9 p0 a7 H( C8 `: l4 ^
struct bitnode *lchild, *rchild;
# s( o A" y, v7 h- ?}bitnode, *bitree;</P>& i8 H/ b+ Q' I. }
< >void createbitree(t,n)4 p0 W. B0 f g& J# A1 |* W8 r G
bitnode ** t;
& u8 f+ k) Q6 B$ dint *n;" ~! `/ n" t$ {5 V2 j
{, M# R0 X: l5 \* ^
char x;
* ~( G9 c$ t; ]# u; u& w bitnode *q;
! e, H: S5 A5 |/ K *n=*n+1;
# F. h1 [5 Z1 [ printf("\n Input %d DATA:",*n);
& V, `- C: x4 b+ M8 I x=getchar();# W- q" K4 ]: [, I
if(x!='\n')
" e! N2 R+ r9 N [ getchar();
8 _/ D0 s! g! ^2 \1 @ if (x=='\n')
* D: r- } b+ S( @' R return;
# A5 H. O) i0 }; w$ q6 [ q=(bitnode*)malloc(sizeof(bitnode));
: V$ n! w Z% X! L( [7 Q$ n2 @ q->data=x;
% o( Q ^1 {4 i0 I R q->lchild=NULL;
: @" R x& B+ O7 [2 b. A4 a& E q->rchild=NULL;
4 B: m$ P+ c5 I$ G9 ~ *t=q;
1 O2 N. X$ j! E2 p: E) V; ]6 Y 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 y9 b3 u! ?3 a0 B createbitree(&q->lchild,n);
) Y5 P% U0 p8 z z2 \$ n/ a createbitree(&q->rchild,n);1 ?) b1 y: L: k7 X- j
return;" \. i; L5 G1 ^% t3 Z( C
}</P>$ a- o! z: Q- r3 g, v5 t& U$ C4 l5 `
< >void visit(e); j6 P" p) |+ \( k- o8 C
bitnode *e;8 e) n- Q O# c' Z* @/ b- w0 |
{
/ Q. R& c; u; k/ n. P printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
3 G9 F" T5 X; d- t: p5 z. S' b& ^}</P>5 O5 p5 g+ D. \' i0 ?
< >void preordertraverse(t)$ T7 D. h/ a. \/ a+ r1 j
bitnode *t;. E3 a4 {; G0 I3 n7 }
{/ C) F/ D. M( [. [4 V
if(t)
2 w0 S D3 I) C$ U. B {9 X" c% A/ l6 T: Q* x) {: j3 d. I
visit(t);2 q: Z# `% v2 U8 r0 S7 X
preordertraverse(t->lchild);) i( ^& m, J6 f: f
preordertraverse(t->rchild);
8 ]" K9 I" I7 x: m3 c return ;
" z9 R: ?# ]) A( { }
5 A% M8 ?+ V% K6 X' I else
% K2 F7 |; v/ o# t, x5 f return ;
, h4 f% v, s. {}</P>
$ g* ?* x) [3 u< >void countleaf(t,c)3 R$ _1 a! T' o+ B
bitnode *t;) n) H: w; I% l
int *c; K2 z; \! X' g/ F5 R8 ~
{
5 l* T5 O: K* w6 ] if(t!=NULL): b0 ]$ s8 ` L) x! T/ E# U, @
{% I7 S# n3 v4 I4 e
if (t->lchild==NULL && t->rchild==NULL)
& M$ _7 e5 D& K" v$ @9 Q7 q0 q {
) U. ~; m1 d# X; y h2 V" _ *c=*c+1;2 S9 ^: Z* Y0 f3 v8 A' K: p
}! R7 z% P- b/ n- g: M$ ^
countleaf(t->lchild,c);9 r* l1 F# |- H% b% g1 N
countleaf(t->rchild,c);
/ I/ t8 `; P# `1 k- B' j }1 ]7 W; p- h" Q! b' A/ x
return;
) [7 o7 C5 n, q( [}</P>" v( T% U# \% ] z( U
< >int treehigh(t)% H) I4 s! `% m5 z- |& {0 G
bitnode *t;9 E0 }8 c. [& _% } y' n
{
! L7 ]$ d1 T0 J: E int lh,rh,h;
. `5 i& P: Y' u! \" V2 V if(t==NULL) } @9 k( c7 R/ l5 V
h=0;
! _+ X: @. D1 T8 {. R else
: n% c9 g* \" C1 j {' e" m/ V. Y$ r, p. F- H5 e
lh=treehigh(t->lchild);+ R" I5 t# @- p# R
rh=treehigh(t->rchild);
3 h8 s8 x1 Y3 d. H7 Q3 z h=(lh>rh ? lh:rh)+1;
2 j. b% N% Z8 F% q, }& l }& K9 p" z" ?# z* ~5 q/ W1 h8 D
return h;( e! b! _- g3 B+ d* x F# B- j( b$ I0 ~ u
}</P>
0 k2 y7 o8 U0 V) _& P$ f8 N< >main(); g; E# s. X. @! W
{
5 {% r+ B! u. D* {' Y2 f2 C: x7 K bitnode *t; int count=0;
7 J9 T4 I K! O* a# u7 i int n=0;
1 l- ^1 G$ u# G) H printf("\n Please input TREE Data:\n");& ~. G; N4 B o M
createbitree(&t,&n);
u" x: S4 b, Z0 {3 t- }. A7 F3 L% b printf("\n This is TREE Struct: \n");
/ x, B) ~' ^+ D6 ~+ k preordertraverse(t);
% C! P# l0 K/ `9 A0 ~. P, h) ^ countleaf(t,&count);( Z) a& p+ k& y$ ^- |
printf("\n This TREE has %d leaves ",count);+ {8 a& t) q" d. X( q. t5 q8 K
printf(",High of The TREE is: %d\n",treehigh(t));! t; J- F: L- I
}</P> |
zan
|