- 在线时间
- 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>( C; b3 R* l; Q' S3 O! O3 r
#include <stdlib.h>
& M4 s$ U8 ]8 ~: M! K#include <malloc.h>
5 _5 E" U- ?8 w
3 t& D4 U! A; ^# `$ o, x' ~+ N' n3 @7 N9 ^9 h3 P2 A
< >typedef struct bitnode* c$ F, a& ?9 F; A0 W/ q" E
{% y) U& ]" c' `& q5 L; W% m
char data;
( k; d' U; }) O% j7 y struct bitnode *lchild, *rchild;
; \" p$ r/ D. k) t) X- _1 \}bitnode, *bitree;</P>
6 O$ L$ b& p7 r3 ]" g% h< >void createbitree(t,n)
8 v% \! d9 h- `bitnode ** t;7 h6 T* g1 J4 e' o* _ J
int *n;
9 g( I' W2 h! x! D$ Q/ L1 V9 k{
( k3 [! P, O# a$ t2 L char x;
0 Y4 |1 ?* @# Q! Z bitnode *q;( T* ]* T, |9 h- I9 ^4 t: p
*n=*n+1; J; @- d" H p6 N7 I
printf("\n Input %d DATA:",*n);1 b- d o4 i0 K4 o( O) B
x=getchar();. \+ \) K* D8 B6 F1 J! V4 d* _
if(x!='\n')" [. v% y7 B# f b) b P
getchar();8 B5 ]# K5 q/ m+ k- C& d/ E ]
if (x=='\n')" t( q% [; j* L( Q
return;+ t" b; c" N0 M \8 ~# o5 o7 Q
q=(bitnode*)malloc(sizeof(bitnode));2 ^, W$ H+ ]/ g" a# g0 k2 @' H" `
q->data=x;
; E' K ?+ z1 Z1 z/ `4 p& P* I( Q q->lchild=NULL;* e, f3 j9 U8 U" n3 l
q->rchild=NULL;# y, _) P* k6 b
*t=q;" a. k/ W5 x+ J( x q9 d, ^) J
printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);9 k0 n8 c1 z4 K# X
createbitree(&q->lchild,n);
6 }* \! W( J6 ]& L! P V/ X0 d0 {! I createbitree(&q->rchild,n); D' a* A7 e: s8 D- B. s, I# n
return;/ G4 Z6 B6 T; ?) @8 q
}</P>
2 z/ [& F* U2 q+ z& K; D. f< >void visit(e): y/ x* X! o. {3 @
bitnode *e;. E/ c+ R- A. P& r5 ]
{# T/ P; L1 O A$ T- t) b( w* E/ _ ^( b
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);- E0 z1 K5 `- n9 v( c6 d4 v5 {
}</P>
. s' o# F7 |$ m! z9 K, ~2 ?4 O< >void preordertraverse(t), C' s- k5 L. E/ N, w
bitnode *t;8 u8 {% l5 A0 j2 A5 q6 @
{! u1 f7 d. g" S: a+ y. E
if(t)
! T# c& f' T' O7 S* B4 f; P {
; h) x# n6 K2 q2 j( N% _ visit(t);
9 l8 F$ T4 |: [9 S6 K. O; G( B preordertraverse(t->lchild);2 `% z, q- `- i+ N+ Q- Q
preordertraverse(t->rchild);) J) {% g8 J- }( p c
return ;
6 Q/ G9 u' P1 y& n }
) j4 M9 n1 q: n+ ? else- G- r/ x6 D1 ^7 c( o$ }7 g5 H
return ;
5 \0 [/ z& A" C! d0 x& Z6 ]' K}</P>1 U, P4 J# b# t3 t6 N- i: N- |+ \
< >void countleaf(t,c)5 J- R0 L. T4 m4 i
bitnode *t;: K& } K) K+ e; D1 ^
int *c;
. O6 ]7 Q% K" f. R1 O! ]# Z{
1 t! \- x7 d1 M2 p* u4 P- ~ if(t!=NULL)7 T& [" ?2 G# e1 E! ~
{
' C9 X) R9 _$ A" {; k6 E if (t->lchild==NULL && t->rchild==NULL)* T# u, }# Y, a8 a
{
. a L" F+ g! ^ *c=*c+1;# V# Y2 I7 N, s
}
: Z$ r% u+ ~5 l. @ countleaf(t->lchild,c);
+ k, N. H8 K' _. l countleaf(t->rchild,c);9 Y0 `$ [7 m3 }) ]
}0 {$ h$ S0 o4 a0 a0 d/ y* V
return;
! E8 Y* u$ R) O; j, V0 W5 l9 K8 t}</P>, Q b4 B9 T4 I8 C5 J2 M: |
< >int treehigh(t)
+ R, {1 t, O9 Y$ d7 ibitnode *t;8 ]6 L. b( {: d- B
{
/ v7 {' X: ~% M5 _/ _) @ int lh,rh,h;
: @+ M/ k( @0 _: L3 d9 p if(t==NULL)
1 C9 _: S Z& ~" U! v h=0;
9 x( H" E7 y$ n6 @3 ?" A else* Q2 o' P* x3 [! D+ W& C6 D# s* T6 K
{
; m( D ^3 U; d* V8 m lh=treehigh(t->lchild);
: f/ j/ a& O) s/ Y rh=treehigh(t->rchild);
5 S$ d$ W. H4 y3 H h=(lh>rh ? lh:rh)+1;, L) p! S- r3 H) R- _
}# N Y+ K5 r) `* w
return h;
3 c, J' b& w1 Z" g0 o}</P>
" i, U. s0 Z: p* p! u' Y< >main()+ r% t' U: B6 w' u1 }2 |/ S3 y
{+ |8 s6 O7 ]' r+ E
bitnode *t; int count=0;
( ?0 j5 g G% p6 O int n=0;
; ~4 p6 }0 _' d9 r4 J$ A9 [ printf("\n Please input TREE Data:\n");4 j3 E: f1 }' _1 q2 z8 M
createbitree(&t,&n);2 o4 e: m7 y: [7 e: i0 u- y
printf("\n This is TREE Struct: \n");3 z. }# |/ h& {9 Q/ Z/ k3 h0 x
preordertraverse(t);8 L' i$ A p# W2 K1 J
countleaf(t,&count);# u. f6 V8 C7 g& u
printf("\n This TREE has %d leaves ",count);$ n; a8 m6 I) @: N3 p2 s
printf(",High of The TREE is: %d\n",treehigh(t));8 Y- m" x+ c, A4 d4 {% s
}</P> |
zan
|