- 在线时间
- 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>
1 `1 s W$ L0 s( a( q1 W+ h( Y#include <stdlib.h>
! q8 ]- q. F1 W6 E#include <malloc.h>
& Z% t6 d& k# ^5 n# K
& Z4 _) o# m! x8 c, Z, ?
* K8 z2 T d# l" q( D4 K< >typedef struct bitnode( ^' r7 I( i" g
{# k/ f; u* G; R5 \0 Q7 Y# B: b
char data;8 g# R" ?! r3 c* v
struct bitnode *lchild, *rchild;
* M, t1 F, J8 g6 e( i% f* ]}bitnode, *bitree;</P>6 {, p2 M% C2 a8 S) b
< >void createbitree(t,n)
: D1 Q7 z& Y% l+ Zbitnode ** t;: M: b/ ]# k6 F8 Q$ q% S4 u
int *n;
: z7 G `( F+ E0 h# ? d{7 ]- A3 c6 l5 K2 I
char x;
0 v! h6 Z: A: Y ^9 v bitnode *q;/ l) X& c# o/ F& D+ @# W+ m
*n=*n+1;
$ [/ a3 b( e+ p4 \1 l) _ printf("\n Input %d DATA:",*n);
2 P# H( p/ R! O3 @6 n z x=getchar();( K! H' l; W# C) p7 ^/ }% w
if(x!='\n')) T4 J- y$ ^' `# }3 H/ \+ t- n
getchar();6 G- _! f* J) L
if (x=='\n')
7 @! h1 U" e2 k. B return;
* S" p& d# H; B- t. u$ M q=(bitnode*)malloc(sizeof(bitnode));5 n, z9 m+ k! J, i
q->data=x;
/ S( c) |* M& J# D. X4 i q->lchild=NULL;! @5 K1 V2 m. H7 _/ Y
q->rchild=NULL;" C5 h/ r) u' r, T# ^! b
*t=q;
6 H$ J+ K x$ q- 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);* J! Z8 D8 P7 b8 ~8 T6 C+ B6 `8 D6 g; Q
createbitree(&q->lchild,n);/ X; e0 d* H7 d9 p; i9 }6 N
createbitree(&q->rchild,n);
5 r7 c1 U7 F3 f) v5 O4 v c$ L return;+ X( O2 q0 D( k. ^' f. F P
}</P>2 T, e( U4 ~5 r* p( [1 s
< >void visit(e)
0 I# f' e! j' `4 ibitnode *e;
7 r9 \* c8 A; |{
3 e! v7 G- [7 D. P" e& ]5 x printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
5 o7 O. [0 |6 H9 t; v2 _ L}</P>
. Y$ L+ p# G. v/ B. K< >void preordertraverse(t)$ H6 V) ^5 j) Q+ I Y
bitnode *t;. _# ` k: E: P$ a
{
6 y3 ~- J2 U. R+ m R0 n, u( N2 ]7 T# m if(t), L) V i$ ]- l) ^6 g1 b
{* U) ]' x- N+ J0 S
visit(t);
( L9 j b* `* y3 z preordertraverse(t->lchild);
( [' `' r& T) w# Z5 P l preordertraverse(t->rchild);: k' a- u( h. [5 v9 \
return ;6 V; i8 [8 n7 P {
}) {& ~$ I$ d& z: m8 r2 y
else j: A# J* Z+ u$ Y/ U
return ;
" g8 k# Q) L( D}</P>
6 k% O' l2 N6 L" Q$ n* g9 |< >void countleaf(t,c)$ x4 k7 h% i) U% {2 v9 O% X0 c
bitnode *t;( E- Q8 l3 G; W( A
int *c;0 A8 @! i& ^& i# C& p
{5 j& L5 {$ a1 h% |+ a' {4 W
if(t!=NULL)
/ r. M$ B) j$ U) ^4 h; w/ I {
4 M$ S: {# m+ B7 [0 T9 g8 l! t if (t->lchild==NULL && t->rchild==NULL)
1 x4 p( A: H1 G2 t# ?; D5 D {' b. x: G& O' t/ r* N
*c=*c+1;7 }, C) v. L% G: }" H& |8 H; Q
}0 I" \/ C' v# j% `$ s
countleaf(t->lchild,c);7 [4 r0 G( Z% b) Y& w
countleaf(t->rchild,c);
6 Z3 W% t5 A. L0 I$ U. } }: z- I& k, I0 r% B8 F
return;
. W& W+ p& b8 ]+ h}</P>
% L$ b9 V0 S4 a2 M t% W* h< >int treehigh(t)6 f. X: o1 p; w2 ^, a# ` P7 p
bitnode *t;1 p( H: P2 k5 p7 L6 B7 C! Z
{
! C* [ Y7 z/ D R int lh,rh,h;
: h0 d+ @, g, Z. \) X if(t==NULL)
. Y& }# S3 P+ Q; P# u8 ? h=0;
: @8 B& |5 ?6 ^! {' y1 s else
( R& `4 ]. e' Y f1 H2 f* R% U {
[! Y3 J9 k$ ^6 Q lh=treehigh(t->lchild);
& Y- a' X1 J5 E L$ `* o' g S rh=treehigh(t->rchild);
5 C$ M# V& _" i! X1 y0 f9 g m; q2 n h=(lh>rh ? lh:rh)+1;4 }" z: K, e, P9 E* L0 Y
}9 \/ F! k% q' X" r; j
return h;
: ?1 o5 Y" n" W* k( i5 E; T}</P>
4 |# R! }5 f) V' X< >main()
# L& x. E4 g8 c( {" _( u{
/ k0 i, i# ^ c* r0 u bitnode *t; int count=0;$ j5 p$ q) j/ v! A5 ]
int n=0;
y+ ` l: S! Q" X printf("\n Please input TREE Data:\n");# B/ I$ t: v6 p9 A
createbitree(&t,&n);0 \! q& `8 `% Z! @0 i
printf("\n This is TREE Struct: \n");
: j0 ?5 @4 h: B9 d I# P* G5 [& ` preordertraverse(t);" u) x0 |' Z/ u- I. O6 f8 y
countleaf(t,&count);3 R h/ r7 v. n* S
printf("\n This TREE has %d leaves ",count);
! W1 C0 w3 s; j3 n, D& v, m printf(",High of The TREE is: %d\n",treehigh(t));
8 Z3 R1 l4 e3 I- O$ l: T1 l$ @. ^1 J}</P> |
zan
|