- 在线时间
- 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>
# t' U9 W. E0 X0 h; o$ P#include <stdlib.h># a& ~$ v) q9 K, W/ C/ u6 I) ?9 J
#include <malloc.h> 1 Z) @& p! f( e, r$ `
, b" Y9 e( ?+ H+ ]" x% X
4 P- ` K& y5 s
< >typedef struct bitnode
& B* v+ y' ]9 x9 u3 n! [# b{
# A- {& ]+ @. K: V9 j( Z char data;# L6 l% r/ Y1 d l
struct bitnode *lchild, *rchild;3 X- r( `. I7 q9 c
}bitnode, *bitree;</P>
& ~; E) a1 k' @4 |9 Q4 O' k& a< >void createbitree(t,n)
( A0 v2 g, a5 I6 Fbitnode ** t;( e6 ~" Q# U3 K8 Z3 Q- |
int *n;% h* s5 l- A i( T0 x! }
{
: H5 a1 w9 H4 F) C( c$ h% G char x;
2 V9 y& w! J! T) M+ Y; P bitnode *q;& L+ z' r, C! Z7 T& A. C" S
*n=*n+1;
. U3 s9 ~3 V. \ printf("\n Input %d DATA:",*n);! I6 R/ z' Z( k2 M/ |& Q. m7 b
x=getchar();, |" R1 a E. r
if(x!='\n')
* {# e. H! N- T% @6 F J4 }8 z getchar();
" e' P- ~& J' l) } if (x=='\n'), J+ y5 e: s: B, d) S
return;1 Y1 E n; }! z' `' q- G. G1 n, N
q=(bitnode*)malloc(sizeof(bitnode));( m, u$ z; g1 c4 @) e0 N* H
q->data=x;
, U# \( {9 R3 g- k- I' P; i q->lchild=NULL;' @( U' A( f: v
q->rchild=NULL;
& z5 o3 N; h9 i5 Q- ^& I *t=q;; l# u, |* c! S* ~
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 t2 _) V, Y% } createbitree(&q->lchild,n);
/ @$ E+ y: R. q' p: h5 y createbitree(&q->rchild,n);
E" O+ M# U L5 a( q0 l return;
! d3 k& e+ Y8 u" a}</P>
+ s* O1 F- ]) m2 ]/ w6 s& @$ O< >void visit(e)6 U( n7 h% e. a' B
bitnode *e;
C/ F/ u* x0 I9 f4 M: e{4 T) V3 S/ u1 R; Z8 \
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
6 w1 h% j) R2 ^6 Q}</P>2 I! [1 P, k5 l. F2 E
< >void preordertraverse(t)( `- a" D0 l4 z* b. S. c
bitnode *t;, h, E8 x; i \" f) J
{/ z1 p) q N, O9 x
if(t)3 M4 H! _! V- M
{( {* K4 V0 \4 f- F9 {
visit(t);
* y" t& A9 {0 u% L+ W( [& J2 _7 m9 i preordertraverse(t->lchild);, N* |& K% v& M$ x( g% k/ K
preordertraverse(t->rchild);) j7 i' \" S. U! T
return ;( t+ @4 G( `, d7 c( x$ g
}
# J: D; R( L: ^ else
, `5 j2 y' A: G. v: m return ;# Z) E8 e" ~* K0 c9 k9 M' o
}</P>
3 S* {5 G+ H2 e< >void countleaf(t,c)$ d) `, R, |3 P" e
bitnode *t;
# l) @: d7 @# M! j- r5 Xint *c;$ q" [% I: }1 J
{
+ O8 S8 I; L7 p+ o n2 T9 Z" v: G% j if(t!=NULL)
3 d0 g: V o f& _9 f9 ~5 b {% d1 ~# ` _" Y
if (t->lchild==NULL && t->rchild==NULL)
" m) t. \# y j. a( K/ z" s, Y8 H {
, N. _' [, c* b' ^ *c=*c+1;$ c* H* v( D! s1 K \
}
# q, f( ^& j+ _6 k& q6 ` countleaf(t->lchild,c);$ a" K9 m5 g8 Q
countleaf(t->rchild,c);. ^( J7 B% z9 ~3 u
}
9 k, z: @( d9 g# F" O return;- `- ?! F+ \- V" w4 i, C$ Y3 C4 m
}</P>$ `5 V( k/ R4 E: S
< >int treehigh(t)+ Z0 [: v: v* } s; @ b$ j
bitnode *t;
) Z0 C* Q) a6 d, e{* ^* N4 A h# L+ g
int lh,rh,h;' T/ M1 C3 c- E T' J% c r# b
if(t==NULL)
2 {0 r, s+ ?- @2 V' i0 q- M1 C h=0;
P2 P) D) c) W+ O( y% I4 U7 r5 o else2 l O( s9 }- A
{. W" k3 \" @' N- M
lh=treehigh(t->lchild);4 x7 `: }# G( o, P* N
rh=treehigh(t->rchild);
/ |! l% s" s$ ^6 G h=(lh>rh ? lh:rh)+1;
& \) A8 f6 C9 x% j$ W" V+ N }
# J g( R- |$ u4 O( o3 y+ u return h;1 E& B; R; ~/ j& h6 m1 J8 A% I
}</P># U5 O8 M+ f4 y1 D2 ?3 N4 G* @
< >main()
2 o2 g) o4 h+ r7 `$ C8 ?{9 T( O/ [( f/ L- d
bitnode *t; int count=0;
4 ]7 Z3 o' e' F/ V4 o int n=0;
% P( f3 v# s$ i7 Y printf("\n Please input TREE Data:\n");
+ [/ Y! |- z2 \2 z* A createbitree(&t,&n);6 ^; j# i! H7 M2 t9 V, F
printf("\n This is TREE Struct: \n");
U: X3 N- |1 J1 q- W( o preordertraverse(t);
2 w% U% |! d4 l- Y: D' V$ _; o% e" g countleaf(t,&count);
) L2 a& p& L2 \: c0 | printf("\n This TREE has %d leaves ",count);; L6 \0 ~, V( b+ i
printf(",High of The TREE is: %d\n",treehigh(t));
5 h" Z% y% I4 A9 ]}</P> |
zan
|