- 在线时间
- 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>; W/ f7 o% d, w# T) K& [/ h3 h
#include <stdlib.h>: ]# h! M: u" P6 R a
#include <malloc.h> : h, `5 ^7 X5 q I! M( Y; C
# I- M4 z/ g* U* L1 A2 K
( w" N: S9 i& K) V5 h< >typedef struct bitnode b* j7 s- b$ W
{; ^: a# r$ z0 Y. W8 h
char data;
+ J6 k' e; W, ^0 x struct bitnode *lchild, *rchild;! c' B+ ?* B5 w9 u, E
}bitnode, *bitree;</P>9 ~+ w! `9 W8 ] U4 d9 I. F6 N
< >void createbitree(t,n)/ r, W b! K) b
bitnode ** t;
# D& Y2 b* u" e. ^int *n;9 X" n& x9 e8 h9 w/ o
{
r. W- E! d" E' R( |; M char x; g3 ]6 U' L8 f) L! Y8 v. d& H8 g
bitnode *q;
3 d- A: F N, t *n=*n+1;# b2 j. S) b t, n
printf("\n Input %d DATA:",*n);0 M4 ^5 g q n' K" O5 m. E% a9 |+ V/ I
x=getchar();
) O1 q7 R% p+ t; ` if(x!='\n')
- o1 s2 o+ B3 Q8 q! p7 R5 o% Z getchar();
7 t* t+ `6 T4 S/ P9 j8 y, V if (x=='\n')! N: M8 W0 L5 z# H" @1 Z; W$ j( D% d
return;
% D$ S( T! g5 }3 Z q=(bitnode*)malloc(sizeof(bitnode));( |+ L4 k j8 F7 d' U
q->data=x;
$ ~# V( j/ G. T. ]6 H6 z q->lchild=NULL;
& V5 Z/ g+ c2 { q->rchild=NULL;' a( M" K$ R, O8 R
*t=q;& n1 E8 n& M/ `. Y- 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 Y$ D' c( s6 k8 [2 y
createbitree(&q->lchild,n);
2 r0 a4 [' [! L' z* ?. D; H+ j createbitree(&q->rchild,n);
3 K4 C) J/ D* e8 S return;: {3 L3 d5 v3 v
}</P>/ C- Z7 u z$ G( A! p( }9 x- w
< >void visit(e)7 P: w) ]( _: ~. `! Z) @. C
bitnode *e;3 R4 |2 p# S- R- J6 u* E
{. U$ K/ f( D7 J$ c, w* e3 B. i' T* t
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
# p- [* k O8 p5 T1 r}</P>$ h+ r6 L) s3 e1 Z
< >void preordertraverse(t), S' T$ E( l4 I! o
bitnode *t;# W1 ^' |6 L- {, n: T5 Z2 N2 x
{
: r3 T" t) J7 G. N: _; ? if(t)
. S4 @! s: q. F* S, g+ @6 X, s {
3 O( }6 w; ? o, P2 i, N0 ` visit(t);. `: u* w& G9 v' ?3 U
preordertraverse(t->lchild);2 M* G, z2 |6 S* S
preordertraverse(t->rchild);) W2 q" I! W5 I4 x* v
return ;7 i4 M& f$ z7 [4 q! ?/ b/ b
}
- I# M* {8 j8 {' c else1 A. H1 L, e7 Q, `
return ;( ]: {3 p n+ N. S+ T
}</P>: O9 J0 p' q/ i) d7 N( Y. F1 p
< >void countleaf(t,c)5 L9 _% E1 n" g1 x
bitnode *t;9 }4 S% c. e* j; X. I/ T7 U* w
int *c;% |& u( T9 ^# E ?5 `9 H: B
{7 [1 N6 L1 r: o
if(t!=NULL)+ r0 A$ s! }0 F) d
{
g+ f2 |, X: D$ Y; C if (t->lchild==NULL && t->rchild==NULL)
9 E! r6 h) _* |$ w2 V. W# |; A {
+ y! Y; W2 o' v *c=*c+1;
: F a, B& u0 h4 q( M! N2 ` }
) P9 E; ^" e* {+ L+ C countleaf(t->lchild,c);
9 v4 }6 [6 ?4 r$ i countleaf(t->rchild,c);9 p* {# n( \* O' ^
}( s% F ^ t: ?2 |9 m3 K( J
return;
1 S$ u# D5 k9 u: F2 G% @}</P>
/ j& n1 \7 A+ J< >int treehigh(t)
9 T6 ]9 Z6 F7 p! Q! I7 Kbitnode *t;
/ w* V5 L) W' j- q+ A w{
9 K+ P- Z6 t; l# W ]. f int lh,rh,h;. w. Y [2 ^2 B# _2 Y5 d. o
if(t==NULL)3 S& x& A' f$ ]* m f+ T
h=0;
" l& @# o* E7 d4 d+ Q! D else8 a; J: q4 w( b. `/ x" B8 x: z
{9 [& J1 v7 |, ^; F! s
lh=treehigh(t->lchild);7 y: X% F5 B! @6 {
rh=treehigh(t->rchild);
& H( i5 r$ J1 v h=(lh>rh ? lh:rh)+1;
) i3 }5 s" a7 U" _5 M }; C5 z8 y8 x, Y x2 X$ P
return h;
- e' p* g/ Q3 P. L) a# u" t8 H' ?}</P>7 E/ Z: ]: o# I; }8 H( T
< >main()
- g r1 |2 w( z, e4 K- e4 `{% Z4 J+ r- {, e+ E+ d( R
bitnode *t; int count=0;: w5 L& Q* X3 i5 m, T: M0 z0 j' H' }+ A
int n=0;. B; g; ^- J5 g4 ^
printf("\n Please input TREE Data:\n");
% }0 U+ `: @4 @2 I0 `( L. r createbitree(&t,&n);$ I# y; U. b i# v5 R) {
printf("\n This is TREE Struct: \n");6 t4 q: R2 A" Z( A( m
preordertraverse(t);/ o1 b! o$ ~" I+ v
countleaf(t,&count);
1 {# N% j* ~7 d5 ~1 @ printf("\n This TREE has %d leaves ",count);# S' E, M; m0 |" N5 R0 W7 s
printf(",High of The TREE is: %d\n",treehigh(t));
/ r9 \' d( f) f% y( X}</P> |
zan
|