- 在线时间
- 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>' I; s( m* X; W3 F' |/ G: C
#include <stdlib.h>
. B5 r+ L& `! }#include <malloc.h>
. x$ w* A$ U$ \; f
$ y$ |# H0 R- V3 e8 a, Y/ w, q& Z% b" v
< >typedef struct bitnode
8 s9 ^9 C! r, H2 ]$ ?* Q0 i) x4 N{$ @4 G o' A: f/ e% J e" r# v
char data;
7 |% a3 o5 c9 w6 R struct bitnode *lchild, *rchild;8 F) O: N: K$ H' j3 o/ P3 k
}bitnode, *bitree;</P>$ C% Z6 I- R3 Y* m
< >void createbitree(t,n)
; _6 t z7 E; p; A: r8 {bitnode ** t;
& \/ i+ [: h7 d% Bint *n;% @5 M+ `/ l3 ~
{+ c& @4 v9 a- R8 C$ F
char x;0 U3 J7 S0 u a# o5 L% b
bitnode *q;) x: A1 \1 O* j/ F" |8 s7 i( K+ M
*n=*n+1;8 d: v) c" ?6 p7 o" R* j6 U' h
printf("\n Input %d DATA:",*n);
" x% \/ e" \7 T; w x=getchar();
5 e" U5 ]7 b" d3 T! R4 I if(x!='\n')) i% M, w x& T% X- {
getchar();
/ _5 @! E) J6 E4 P$ |4 f if (x=='\n')# a8 R* E# t4 _2 }9 {
return;
7 w* U4 A/ w: J x2 w/ } q=(bitnode*)malloc(sizeof(bitnode));
6 d- o2 h: U4 J0 x! B q->data=x;& _. Y8 k. [9 P, n9 l
q->lchild=NULL;
3 ~, k, n8 U4 L( S& r$ D q->rchild=NULL;
+ }; n$ y7 s: w0 @ *t=q;( L7 a% F/ H5 U5 w1 w" f
printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
, e O2 t; |" a) ]0 W createbitree(&q->lchild,n);
7 Q2 E2 b1 m! }0 Y8 c createbitree(&q->rchild,n);
2 ^4 N& @1 U" F2 R+ k" J* `: L0 v* S return;
' K6 Y6 F* \. e6 @7 |$ } i}</P>
7 j3 x' x) f8 b5 \+ G9 f< >void visit(e)5 o2 C5 d! {0 d" R' W
bitnode *e;
# W n$ v0 x6 A' ]/ Y{
1 E, H0 w5 V3 Y1 I printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
$ P1 V+ @9 f; G7 w& N) a# ~}</P>7 v8 s% _5 a7 {3 U4 n- ]* T( h
< >void preordertraverse(t)) }- D- y% s6 j1 |5 f, W4 f
bitnode *t;
1 d2 h/ r- X- d. ^{
" X6 n: w8 K1 ^/ p# U/ V if(t)
- e& {$ g6 B, F; [ {* a$ v8 j U& y) c' y
visit(t);
8 a; p$ I& k3 ~* c C( g preordertraverse(t->lchild);
2 d0 N$ ]8 }( T: }& y/ S! G; ?2 w preordertraverse(t->rchild);7 C# ?- ], R/ J$ w' r2 v
return ;+ K% u9 A# _6 \" o6 V$ w7 H2 M
}
) K; i0 d+ I2 L6 z else3 {5 c7 N: o! o( ]; D
return ;
- z& I8 x P6 b: p- o}</P>
- G3 L) _$ W# W# A- n< >void countleaf(t,c)1 A5 `& q! r6 P# W5 \2 I8 v
bitnode *t;& x% a8 `0 B; c/ y$ M
int *c;9 _% _% x% x. N, G0 `# F f
{
: o& o( m# m3 I/ C if(t!=NULL)
3 I* M0 a( L7 w {
7 C& L4 {0 a* V. Z2 q& P$ ~3 E) M if (t->lchild==NULL && t->rchild==NULL)
( b) j! C( n0 _$ W {
* F; ^7 d0 ?5 @' z *c=*c+1; F, R" B& `, s4 a# j
}
( x0 @$ i% S1 _% x* g countleaf(t->lchild,c);
/ n4 M% |* z* a2 {3 |6 p7 _) G countleaf(t->rchild,c);
+ k9 W8 f# P4 o# p0 w) } }
' {# C5 b1 ~+ H! M, M# N return;! {. b( A3 j# _6 j9 t2 s
}</P>- G7 G& H; r1 I
< >int treehigh(t)9 q, i9 Z4 d6 v1 a+ Z) A1 A
bitnode *t;
1 j- y9 T8 |3 Q: j( E{
/ ?) r) O) T2 f# L: h, V: q int lh,rh,h;& i, O# u0 C* s; \# o" R
if(t==NULL)
& o; F' [" ^% A4 M4 d5 b3 d h=0;- H& @% N# ^2 Z9 @4 ~
else
5 C" Y; W4 v2 r$ i4 y# i {3 h8 f) b) \6 K$ r9 b+ [
lh=treehigh(t->lchild);
6 ~. q) y" j' c2 w3 G, Q rh=treehigh(t->rchild);7 [+ O5 f% W8 j. r
h=(lh>rh ? lh:rh)+1;0 S; E6 j; h! m6 [
}9 l# [7 w1 S2 B$ ^& {, F. u0 L* j9 M
return h;8 ?3 @3 W% z+ I) o. k! |
}</P>
) N( `1 A7 _7 N9 e1 o/ }( M< >main()
# H* \7 J; x& r3 o5 b$ [3 n{
9 ~: n7 j+ v @6 l6 z5 j7 p bitnode *t; int count=0;
- k0 }! c) K$ }6 S, Y9 | int n=0;. U* ]4 ]/ A2 A+ h% {# @
printf("\n Please input TREE Data:\n");
, b# ] ~' p8 m i0 a1 }; n! b createbitree(&t,&n);
' V8 k2 h. ~ p! Q6 J4 C9 | printf("\n This is TREE Struct: \n");
" W8 W0 J/ S, }3 R preordertraverse(t);6 ^( H* ~" N. j+ @% a1 n
countleaf(t,&count);
8 T5 v# c7 u' c, l0 K0 E printf("\n This TREE has %d leaves ",count);4 `7 G9 e4 R. H" ]9 ^. F
printf(",High of The TREE is: %d\n",treehigh(t));
) {2 Q! V( \& s4 j# @; U) s}</P> |
zan
|