- 在线时间
- 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>! o' M" O7 j# T' Y9 u% Y/ i
#include <stdlib.h>
8 P1 I9 j' K* E( Y& l5 v#include <malloc.h> - G/ Q1 y# H0 e- h- e8 J
5 T9 S/ _$ O: l) a d; A6 I. o, J8 x0 s
" d$ ~/ W" v0 n& j% @; r8 l< >typedef struct bitnode
! ^. Y1 s9 o: S1 B3 {{' J0 D) t, D K1 f
char data;4 E! Y2 C# i% _
struct bitnode *lchild, *rchild;8 H7 ^1 k- t) T+ n% S/ p) A* \. X) r2 |5 \
}bitnode, *bitree;</P>1 L6 |0 p+ i4 S+ z
< >void createbitree(t,n)/ {0 m5 T! H. q9 y
bitnode ** t;! B1 `$ R, g# m; e& { l' I: e. z
int *n;( N: E4 u0 r7 T& ?! v" Y
{
) @6 {- ^% |0 e% o, _) b. s5 ] char x;
4 Q% Z( O% e9 [ bitnode *q;
' J( E4 j0 w. b' W *n=*n+1;+ s+ h4 V3 j- L6 M: ]6 r- f
printf("\n Input %d DATA:",*n);4 B4 i7 R5 |: D7 J5 f
x=getchar();0 J2 U4 r% {- u0 d0 C8 |$ p
if(x!='\n')
- ~' d; k0 Z7 ]* b& D getchar();
/ M* Q% F; ]* W4 A4 Z- ]' j% a if (x=='\n')6 ?: g3 @' f2 Q2 N- }7 Z
return;, D$ x m$ t7 G, m5 K1 O
q=(bitnode*)malloc(sizeof(bitnode));) @6 v$ Y; Q) \
q->data=x;
, Y) u/ a% O$ F, H: D q->lchild=NULL;$ i6 t4 B$ [2 B/ h
q->rchild=NULL;0 g& `- q+ ?& F9 \
*t=q;# w. x! w% s b& ~" O! g
printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
6 U: n; i# `7 |( h- ]2 R9 e; E createbitree(&q->lchild,n);
; y* J. Y' @4 w5 W, z, ] createbitree(&q->rchild,n);
/ K0 j* v# N/ N2 Y: V( t) T return;! }' w R2 \4 Y S# g4 q
}</P>6 X1 a/ A, b$ U' t6 d
< >void visit(e)2 |9 Z% {& J: H2 F' \
bitnode *e;
! \9 m) S. I4 p- z; F# Y{9 l8 C, _3 t% c, ~1 d
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
. a- U+ g$ k$ V/ Q* ?}</P>
7 L1 O+ j: U0 s' R2 Z+ @! V< >void preordertraverse(t)
: r8 V& u' }5 x/ kbitnode *t;
9 Y) P1 O, n0 {, G. C3 o{
+ j( V3 x6 |! R( {) F6 d s if(t)# p o$ E7 l$ D" k4 e9 }
{0 v9 X; g. |3 e6 W2 q C, J
visit(t);
9 Q0 z0 {. u4 Z0 S v" a preordertraverse(t->lchild);7 Y. o4 l& m* i ^; ^; |: w( j
preordertraverse(t->rchild);+ u+ L& r0 t* ~# B: L; j
return ;' O4 ^5 B/ l3 h5 Y
}3 p- F& S9 f. u$ q
else
2 B H, j2 ~* N2 W* M return ;
) S; N$ e3 l" R: N4 _) Y9 X}</P>
, E! t; f5 |, ~8 P6 s< >void countleaf(t,c)4 T% x# c- u9 N3 q
bitnode *t;3 Z+ v( D6 {) P: t7 Q' O3 d
int *c;" q5 W; X3 J R# `
{
0 v5 O9 i+ m$ t; h6 m if(t!=NULL)
P7 U6 i; R A5 _/ D7 \ {
9 B1 l% \0 e& i if (t->lchild==NULL && t->rchild==NULL)1 i" t0 a5 L( ^8 i. Q& A
{
& n2 J- d, m( p1 A0 O* ?7 r *c=*c+1;2 ^% D7 G" [ ]! Q7 n1 J
}6 `! @6 l3 n: r3 ]
countleaf(t->lchild,c);
5 D7 |1 B' P0 _* _) v9 f" v( S* V countleaf(t->rchild,c); x s4 A/ c9 m% X, \0 X0 K1 x
}
% f. }) B# i `. { return;: j' F3 L, ^# k" D
}</P>7 N/ e! i1 M, x* R! {
< >int treehigh(t)
! i$ k4 Q6 ~$ q( B9 q: t$ z: cbitnode *t;: E" ?# ^$ \1 d9 g6 u
{
- ~1 X: m& J1 _- w i, h# ] int lh,rh,h;
' z. h/ ~: b- E if(t==NULL)
2 {3 d$ [8 e! z# [/ F4 S0 } h=0;! D/ M3 z; U4 O0 E1 J4 E! P
else
: ~! i7 r! `2 g6 n: P: D& T. @ {
' F# A$ G, f' ~9 g3 x lh=treehigh(t->lchild);8 H' v) r% ~2 o4 d' f& Z( Q
rh=treehigh(t->rchild); _% S/ |* F0 B5 g7 I
h=(lh>rh ? lh:rh)+1;
/ B, X! a- f/ A" p }
" r- [5 s) ?3 r, _8 ?; b return h;$ D4 f/ d9 y% H8 g0 U6 c
}</P>. R( U7 F1 H2 u1 ~7 }9 {
< >main()
I$ J- v- l, x8 L{
' \7 c6 |( F8 y bitnode *t; int count=0;
* @2 a. d- u% S int n=0;6 G! b# ^. j; Z& V4 r
printf("\n Please input TREE Data:\n");
% F6 ~( Z. v5 U$ t( d createbitree(&t,&n);
3 v ?) ?3 X3 J7 {0 r printf("\n This is TREE Struct: \n");0 [& u* {4 k7 Q3 z6 K7 G
preordertraverse(t);
/ t$ [) B7 Y% Q1 y countleaf(t,&count);4 b# ]5 k+ v1 j
printf("\n This TREE has %d leaves ",count);& B# \( }+ n1 Q& l
printf(",High of The TREE is: %d\n",treehigh(t));
, M! b Q# o) r$ ?) \}</P> |
zan
|