- 在线时间
- 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>
. N" i: ?5 w" G3 @7 V#include <stdlib.h>( D4 h0 e, ]! [0 X( M0 o e9 x; {+ s
#include <malloc.h> e! P+ d4 u' e" o) ^! m N& ^6 q
# W& L+ W" o2 j* ]# a7 x( N
: d4 F! e" ]' D2 b< >typedef struct bitnode2 D3 f0 O7 A; Z/ A* y
{+ A# S% X7 m4 P/ c* W, X
char data;# A2 T7 k+ f; {* H' I. d
struct bitnode *lchild, *rchild;
* ~6 q' S) `3 u}bitnode, *bitree;</P>
, w S% x- B* f! a9 n; B< >void createbitree(t,n); T# f8 U, W& y+ r
bitnode ** t;- `% O' W/ p' K" Y
int *n;
- V* r8 B$ {, \ K/ k{4 \6 ]2 P; t2 w* E4 s
char x;* }) s* w8 A8 ^+ X. d5 E* m2 o! v6 b' B
bitnode *q;
6 w# q; ^! D1 N2 Q3 S4 C8 u *n=*n+1;' _3 n# f9 X) E8 o7 R+ }
printf("\n Input %d DATA:",*n);
3 K; R0 S& H, w; \ x=getchar();& l F$ P% }6 @ G- j7 z* O, g) E
if(x!='\n'), H" _; C9 g2 C1 x. x
getchar();- B4 l& ]+ H! v5 m' [
if (x=='\n')5 C. M3 ~" ]$ s T$ k
return;9 X; G- H+ p8 @: J$ |" L
q=(bitnode*)malloc(sizeof(bitnode));
) k- V; ^0 y9 Z q->data=x;
' B) p6 m6 C3 s: O2 D R7 K q->lchild=NULL;
8 ~& g. _% c' Y. z! A# \ q->rchild=NULL;
( M0 h8 A8 H; m& w *t=q;
' k' s6 W6 c- s: W printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
% d7 z0 J# n6 L/ v1 y5 x4 W D createbitree(&q->lchild,n);3 V) X5 S8 J& o, g$ v
createbitree(&q->rchild,n);6 ^1 F g$ ]0 C' s) d
return;
+ f# L. U. W7 T" j}</P>
- C# u" Y4 _. `' \# R1 R9 a1 [< >void visit(e)
' p r# Q2 b3 O2 A9 ubitnode *e;6 a& l1 F" V' L' P0 ?7 H) C
{6 m* l) d2 a) x+ u- Z
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
9 e. {5 \/ A. }2 l7 T0 A}</P>' D$ W/ w, K1 B" j
< >void preordertraverse(t)
5 Z' G* u4 q( N" `% K1 O' N$ fbitnode *t;
2 N% {/ G k. L{8 d7 \" s v) b3 o- x" H0 L+ J
if(t)1 i! q E9 _7 J/ y9 Z" v5 l; C
{/ @, ~4 z/ p6 H0 J
visit(t);
. ^3 I9 |) u0 Z9 f4 f preordertraverse(t->lchild);9 @( ] r$ C' F }; q5 e# Y1 @
preordertraverse(t->rchild);
, {$ e9 A0 _5 B4 @! A return ;/ x; l' V& f, k8 u! ]
}- ]2 S" e) F( F5 O) n1 }8 B
else- g8 j2 a e# t( Z& r
return ;
, \% o) U4 B; z5 X6 P+ ^}</P>; R: i% _. l8 @+ ] S2 i+ |
< >void countleaf(t,c)
% [8 g3 ]3 ` h! G5 u) A- qbitnode *t;
7 J ]' W- h( Sint *c;- @( \9 j, Z1 |3 m( o5 z
{
; x1 v0 ~# u o9 n2 ~ if(t!=NULL)& P2 k) |" w; |9 a
{ \" y0 i* |' x) |
if (t->lchild==NULL && t->rchild==NULL)
0 X; G) a& o& r {
7 A2 K0 ~0 G# q- H. R. { *c=*c+1;
2 H2 J: H1 Q& L0 {- n }
6 ] H c+ G. I* Y* C countleaf(t->lchild,c);
( d9 u! [- ]- a& R( w1 R+ K! H& w countleaf(t->rchild,c);: X, `3 {! I+ a% l" X% V6 h* ^
}
+ j) F2 F, ^5 c; ]7 B return;
+ u0 p- {8 D2 } q) W. z3 n9 G- K}</P>* A9 C% w, V" V
< >int treehigh(t)
0 i0 ?( n/ Y& k3 n! X. ubitnode *t;
9 B- `. K$ @8 k- f{4 s, H E. C/ ]) }6 H8 T# W; E9 n
int lh,rh,h;/ }2 {3 K) {/ B7 C" s3 S
if(t==NULL): }7 p! Y+ J* p" T4 ?+ ]
h=0;
9 n! l5 D+ q( s6 U1 `* p# m: h else" }& I: Z/ O, a1 R$ N3 P
{
! g' h9 p! v, j7 I+ ~( J6 T lh=treehigh(t->lchild);* S/ _* T3 D) E& L, K& \
rh=treehigh(t->rchild);
* s: J" Q, [* z4 ]( R+ Z h=(lh>rh ? lh:rh)+1;
, ]4 i- T7 m* J: `* ^ }
* M) k9 H7 A5 b- v8 H return h;
( {! q. m5 r! V4 ~}</P>6 G2 X7 K1 s$ q+ U
< >main()
0 ?7 M) R7 v7 ]' H" E! q{7 C: o/ D& I" N, \& \
bitnode *t; int count=0;; s! R$ q# g+ z! L5 C) l, Q
int n=0;
& `* v% Y% ^( S# T8 l# l# { printf("\n Please input TREE Data:\n");- \7 v! @+ C/ [2 b3 B8 b: }
createbitree(&t,&n);: ]7 e# w- b0 _8 W6 j9 ` _
printf("\n This is TREE Struct: \n");5 L/ a6 P. R* ]& [ X
preordertraverse(t);
# F5 P6 B$ Y* n: E! M4 o countleaf(t,&count);" ~+ v% r5 I" w% z0 u& I4 W7 `
printf("\n This TREE has %d leaves ",count);
/ m% K0 d0 \: E9 }& s: s$ b1 n& m printf(",High of The TREE is: %d\n",treehigh(t));
- V! C4 g0 O$ e5 {2 r1 s}</P> |
zan
|