- 在线时间
- 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>
8 \( x0 w; |/ Y+ p1 e5 C, _5 ]#include <stdlib.h>4 l, t Y9 ^3 N* B6 R& i* K# I6 D
#include <malloc.h>
0 Z8 h8 ^1 s4 d- u/ l# U$ ^& w2 G5 q" f( G. C8 C* c& c& o+ _
7 r( `! ?' z8 N9 Z. g: l: r# y< >typedef struct bitnode* ]: q7 x9 T' [% h! G! N! e
{
( u3 Z9 Y7 @: A+ M, y" N5 ^ char data;
6 z& T/ h( M5 j& d6 Q struct bitnode *lchild, *rchild;$ F. ? g' [+ q; `
}bitnode, *bitree;</P>; K u3 n, i: C; f9 E k
< >void createbitree(t,n)# c B- G& p' k8 x1 ]6 j
bitnode ** t;- J* u8 x8 K7 h: t) p2 X( s
int *n;
Q6 V" _) Y) b2 f{
! u# T' }7 Y" o* C& g% w" c char x;
: U* [. m# E3 J% R$ \# y bitnode *q;/ W/ |' v) @5 k, X0 Z- m6 s
*n=*n+1;: O# {* C- v& S0 j0 e
printf("\n Input %d DATA:",*n);
% u# i. L" n) s9 T* ?/ O x=getchar();& \) J( O" r2 q
if(x!='\n')6 O; e, p7 Y$ b$ u( a
getchar();/ M9 W2 d2 E' c( u2 \6 j- Q! H; |
if (x=='\n')
9 i! }2 f' Y2 V. W# q; O return;# k. ]9 |+ n( t- H( y) k
q=(bitnode*)malloc(sizeof(bitnode));
+ p5 L7 U) [! k+ Z q->data=x;
* v* R y& }$ D0 ?) L+ I8 N" s9 h q->lchild=NULL;' N! a7 p" w- d
q->rchild=NULL;, |8 A" d9 I8 h7 f- n
*t=q;
! s3 {; ^ B9 e% p4 D* J Z- s 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 y: ?: w4 H- M' z% c& `1 p# F
createbitree(&q->lchild,n);# v" V4 m P, U: a- A
createbitree(&q->rchild,n);+ l0 v4 \; Y1 X. z
return;
5 J& l" Q. u, @! f}</P>
4 `2 J- y) e+ \< >void visit(e)
8 G& K" e7 ?( N+ p2 lbitnode *e;
# h& q4 H+ X U{
; E7 W. B/ C8 x printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
X( I: O) L" M0 U1 f* B}</P>6 |* ^" @" L! O0 r$ m
< >void preordertraverse(t)
O9 i6 d: `, e4 N0 gbitnode *t;
. b% f4 B: h1 X{
& k* L4 R$ v* b! u if(t)
! z6 H1 ?0 c0 e: d" Y# N {" s+ F9 e( l1 u/ P
visit(t);+ b0 T3 F- O( v" U9 o: m+ T
preordertraverse(t->lchild);
+ \+ K, f+ c! H) _5 [+ r3 O& O3 q! w& ] preordertraverse(t->rchild);
3 F; V9 V: Y" K4 ]: i return ;. O8 W0 ~+ Q. A) E j
}
+ K S& Q' ^" ~5 s9 j3 c else
! |* e. s# R G9 Q! I return ;; D- E+ k9 R w- i; ~% O8 R
}</P>
/ w" Z) z$ {7 t( P< >void countleaf(t,c); o1 X+ @: p) S: a/ F- H& i
bitnode *t;
1 i$ E1 O& z, ^- h* d% u% nint *c;
: u4 ?) x& _5 e" t3 L* u4 E9 `{5 O; R7 x& G4 ~+ |) ]
if(t!=NULL)
, x) l# ~6 o2 d: L {1 D7 O3 d) I" v1 {4 `( Y4 h/ e
if (t->lchild==NULL && t->rchild==NULL): F% W" ?2 {. Z. j6 k! U3 s
{7 C3 j% z' S: p3 W6 C" f
*c=*c+1;+ Z' P# E0 Y% F, K3 J a7 n6 C
}
' }+ [3 l: [, D& \( F9 F countleaf(t->lchild,c);
" G. l0 j& J2 b6 q5 o countleaf(t->rchild,c);! @/ s. E- m) U! l/ g8 d( o
}
# |7 @, t2 | t9 F return;
# h6 l& C* J; m/ V- \, I2 s}</P>8 w2 i' i6 @5 _7 {! `
< >int treehigh(t). y& ^5 p2 o$ O$ [
bitnode *t;( C% A% q6 e; L6 u' @0 E% K; h% {
{
8 L1 ]' q6 V8 { int lh,rh,h;2 W1 {' {+ A$ L0 g d) }
if(t==NULL)2 N' U* F6 u5 ?$ T# B
h=0;
: a: A5 g7 H3 l4 ^ else* e# Y5 X4 Y2 z4 \1 p0 d
{
( o. B% \$ R% y+ @3 h k2 s: u+ W* P lh=treehigh(t->lchild);
9 ]/ ]* v+ M& I3 P rh=treehigh(t->rchild);& r, _) |( w5 I& X& X
h=(lh>rh ? lh:rh)+1;
- I% _# }3 j% }3 Z- J }' N4 F1 @, V# N6 C3 X
return h;7 o! _" w2 D3 f# h' D, T4 E' S, P
}</P>
0 l8 L g1 v+ m/ I) ?6 f! w< >main()
0 Y" W+ p; e0 ]) n8 T{
. C5 b& u( z1 s! i$ G bitnode *t; int count=0;
1 N' p9 w- e+ o3 j9 s# r- S int n=0;6 x* @$ _ ^" }2 u8 C s8 R
printf("\n Please input TREE Data:\n");
! {- \2 ?4 Z6 x, V! X createbitree(&t,&n);- A9 T4 S- z# n5 v& G0 P4 F
printf("\n This is TREE Struct: \n");( Q- s7 r9 _+ [4 Q/ C, d Z) m: w& L+ n
preordertraverse(t);. c# G; S4 ~" U8 d6 ^
countleaf(t,&count);
- V8 F8 ^+ Y O6 ~5 }) h2 R printf("\n This TREE has %d leaves ",count);
/ P1 W2 D& @4 a" c printf(",High of The TREE is: %d\n",treehigh(t));
" W& I, q, e3 a6 |3 k- {3 M}</P> |
zan
|