- 在线时间
- 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>
F& h# d1 t& W5 F#include <stdlib.h>3 G+ K+ y+ c3 ^
#include <malloc.h>
6 D, I6 K" |1 @. O# r* ^& t1 D" O% j7 x& x" Y
6 c& B4 O$ t( t) ~2 @+ Z7 E, ?+ ~< >typedef struct bitnode
0 D. T: Z( k2 q: p/ w$ f/ c& S{
) v$ ^7 ~0 p. n char data;
7 T- E2 |. o) ] struct bitnode *lchild, *rchild;5 o; k$ ]1 f m
}bitnode, *bitree;</P>3 b" D, J* I R/ U4 t
< >void createbitree(t,n)
2 R* X- }! C# p: L1 g' y( I4 i' P" `bitnode ** t;1 K0 r- \& f9 y7 s
int *n;9 }& g$ g* d9 i b
{
& c; S. x+ ]. J) N1 {9 E ^/ m& a char x;) ?& O9 t, V5 @- _1 l. L
bitnode *q;
/ F! w j8 N$ Y+ Y) T *n=*n+1;; i$ C1 {: ]1 ^, e
printf("\n Input %d DATA:",*n);6 Y1 ~: K3 D. V$ d0 A9 R
x=getchar();
6 U5 b6 q# N5 T8 v if(x!='\n')
* z6 ]4 U6 v5 M# M getchar();
. f- }9 X- k V0 |6 M if (x=='\n')
- K V* P9 |1 ` return;
0 Q; K) I8 K5 V0 V q=(bitnode*)malloc(sizeof(bitnode));
7 z. T2 M* A/ K* O1 o. J5 Y5 U q->data=x;
8 ?! M$ x& \7 g( y; p" N( [& Q q->lchild=NULL;- C+ n0 ~, E; _8 `( V) H7 Y
q->rchild=NULL;
& Q, j* `, Y# O$ E" E. d- W *t=q;
6 R/ U' A5 s: B% J5 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);! x* W* W# Z' u
createbitree(&q->lchild,n);
- S, A- m" _; H! @2 r9 x createbitree(&q->rchild,n);
. O7 ` {8 b7 D) Y% y5 T3 x return;
`* d! _ x: K6 k, w, T}</P>
5 Z0 Y1 q# ]+ h' W5 r8 @+ ]3 Z< >void visit(e)2 K j2 `' V: a% ~
bitnode *e;1 a2 g0 a8 t8 y9 m3 ^8 a3 U
{( N: X4 l5 F2 [
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
. W! @3 s0 k1 M}</P>
6 A( J- b: l* s3 k S< >void preordertraverse(t), [( R! w* W: @
bitnode *t;
: {* L% W `5 i& o{
9 P# r, Y, a" S& m0 g, l if(t)1 R+ a5 N8 ]$ Z/ h" e1 T" m
{
0 c. L4 Y) n) Z3 Y4 @0 T visit(t);
9 l- ~# e& F7 E b: ^" m preordertraverse(t->lchild);
9 P3 N. t' i% m6 {8 O- _ preordertraverse(t->rchild);1 Q c" s- C4 [1 ~* ~5 H7 ]
return ;
5 z g" J, J( P* B }
d5 x# ]' P0 `: m else y" H) j# `1 @0 ^2 t+ K4 f
return ;7 o4 M2 \3 k5 D
}</P>
. `. s c0 i. A' f< >void countleaf(t,c)
3 N4 W. m0 g6 C- ?( r7 J: `bitnode *t;
- N- F9 I A0 ~int *c;. r! g A* H. Y- X
{$ x+ B/ ~8 _7 p, s8 q
if(t!=NULL)$ x( M/ u% d( H6 H5 u% s
{
, [- b- z) {" i' M if (t->lchild==NULL && t->rchild==NULL)
) ^. V% W, O2 S% o, U0 w: w: t {5 {/ w) G. H1 B7 p: k; Z2 J
*c=*c+1;1 l8 U% L$ _* p$ U# q
}
0 K$ r+ n8 x/ J5 l/ ~) D2 H countleaf(t->lchild,c);
+ d1 T5 {4 |) c: ^' _7 ]- ] countleaf(t->rchild,c);2 p: D% Y4 l3 V1 @
}
+ f2 `" Q- R1 a' [ return;8 y% G7 ~( [; Y. b
}</P>2 Z( b3 q+ p4 A4 P# v6 [' [
< >int treehigh(t)5 q. I5 _& M- Q2 l* O
bitnode *t;
- k% ~7 T# `/ s" y. g I$ Y' ~ v{
7 V# k1 `/ Q- l3 J m7 |% J int lh,rh,h;; g3 [ r' {, L3 n2 j* B, A' @
if(t==NULL)0 l# H' M: o& ~5 L
h=0;
$ d2 E0 Z( J+ D- S+ m" d else
' P2 n! a$ D, c, _; F4 e+ P {
, C5 v. v. d; }) F5 E lh=treehigh(t->lchild);1 ?8 j* X5 g; x4 B3 F0 ~
rh=treehigh(t->rchild);
' M' ]+ d' [- j h=(lh>rh ? lh:rh)+1;
* A! A4 _8 J9 l0 x6 h, I4 w' k }9 O& E& j& |3 e1 @6 b0 A
return h;6 t, F$ V! @# J( n/ Z( d7 x$ N* y
}</P>$ Y& F- v5 u/ N5 K9 c5 M
< >main()
6 B0 U) X$ [$ z/ d' l{
2 [8 g4 }5 Q0 ?0 K$ B% J4 g( X/ U bitnode *t; int count=0;3 Z. p- Y& x- v3 n8 k" O
int n=0;/ A: J i# b8 _, b- x+ y
printf("\n Please input TREE Data:\n");* v9 n" s% C( C/ G) t. L4 T
createbitree(&t,&n);/ s& ^1 Z4 h7 u# ~4 w0 k
printf("\n This is TREE Struct: \n");( d0 h$ c5 U2 a" y% I% J# g
preordertraverse(t);/ _1 N$ e) i4 P e$ @9 i, Y- s4 T
countleaf(t,&count);; V8 M3 b& b3 {! k/ Q8 b
printf("\n This TREE has %d leaves ",count);" ?& e J7 o. l- D
printf(",High of The TREE is: %d\n",treehigh(t));
9 F3 L% R. Z) O2 i5 T}</P> |
zan
|