- 在线时间
- 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>
4 B- j5 ]& z5 x- U4 S#include <stdlib.h>
' S; k, q x2 ~& X" U* T# Z) d#include <malloc.h> 0 I9 y8 `6 n' x5 {/ C1 A, b
. x" ^: D, {% p% V/ k: v2 b
& G6 w0 u- [& |) t: i) ?% e< >typedef struct bitnode1 ~2 q: j6 l z. F: w
{
. N3 R! V! r. \. u& n/ G char data; j* n4 M3 H3 w9 l
struct bitnode *lchild, *rchild;
3 I, E( h% d5 S- z8 r}bitnode, *bitree;</P>
4 j |" s& U; X x< >void createbitree(t,n)
; H" M* s) S) Y3 nbitnode ** t;
* _1 _- Q# g- J- E/ n4 gint *n;
2 Y: r) o; y; N1 s{8 F9 k- p! _+ r9 i" s
char x;8 f; k2 t+ _9 t
bitnode *q;
3 h. Y" M+ u, ~; ?% o ^9 Q *n=*n+1;! Q7 z l0 _# f7 i
printf("\n Input %d DATA:",*n);. }3 o6 j" [! H8 n; _* ]
x=getchar();
% B8 j' v" f5 m5 B B if(x!='\n')
; d# ]* S& L4 P L getchar();% E, u, ~: }5 C8 ^. k
if (x=='\n')( F# ]9 m4 n# R
return;' O' b' p" q' f& b8 ^/ F* E
q=(bitnode*)malloc(sizeof(bitnode));
& f# a( g+ g2 u0 V% Z, a: e q->data=x;% W' t8 V+ k V0 s
q->lchild=NULL;
6 g2 e# {8 f I1 r5 ~1 S* e2 ~3 b q->rchild=NULL;2 ]7 ^7 @" K! v) U
*t=q;- f9 ~. x$ `: n0 p" l' I, D
printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
+ }- } c. \( |* @5 n createbitree(&q->lchild,n);
( o5 p4 d/ K% ^5 b" Z9 l createbitree(&q->rchild,n);
5 K, x o! ^- n" x return;4 j; B) a) C3 X: [# _- x/ a" J* r$ R
}</P>
" ~7 m6 S7 e4 [. A+ g+ o< >void visit(e)* a5 e+ J7 w2 x K4 l8 O
bitnode *e;3 q. R6 d4 b5 S2 w0 ?2 z
{
- R6 Z$ C7 x d+ w1 ?, X printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
, n6 |4 Q; I X, l$ P}</P>+ I% Q, l0 Y7 C# l- C
< >void preordertraverse(t)
* I' b# }) G7 W0 I- H2 Mbitnode *t;
. J7 e1 M* H6 `2 @4 N5 d5 z3 t$ \{$ `2 ^7 ~# G1 m/ V/ o1 _
if(t)0 z: X; Z$ B- ^7 K7 B( d! K: P) _
{
3 N5 W6 y0 A' c9 a4 _ visit(t);
: Q, A2 A E1 q. v preordertraverse(t->lchild);
, n$ q5 {: P" k0 }" w. ?6 M preordertraverse(t->rchild);
' m* ?8 m/ M8 b9 b. _& W1 b return ;
% l( v/ R8 i% G. R u, ^5 F }
* Z- i8 E# b3 I else
0 ?% ?8 Q% F: K, S. |/ U. Z return ;
- A$ j7 i E8 r3 w( x' B! H, ^1 e! X}</P>
' @, z6 `! B @% W' s" H; Z< >void countleaf(t,c)
4 `2 P c5 R3 x1 ^* w6 @bitnode *t;& R- I& O# _; X0 n: o
int *c;! I Q+ V2 c: I0 |. y
{# n, y' f- F/ y) x& S5 f
if(t!=NULL)3 X+ t! ~" s% ?9 t) C% A: \3 g
{% K& @6 S7 i; z
if (t->lchild==NULL && t->rchild==NULL)7 N: T# X( O$ x
{$ o3 i; r$ z9 g# O8 B- S
*c=*c+1;3 T0 U2 Z- X9 ~1 Z: Q: T
}
y" D) n% t# u/ Q7 } countleaf(t->lchild,c);7 i3 b! ]3 z$ F
countleaf(t->rchild,c);
8 R3 S* z- x; D) u4 E# n3 g }8 c& }0 A7 H( Q4 W# i9 P
return;$ o9 w% R% {3 _
}</P>9 X" U% z3 g& N! f' S, o0 a/ e
< >int treehigh(t); Q& p* S+ E5 w3 g$ ?2 x# f* j: ?
bitnode *t;9 ^+ p( M4 Z9 |5 f- s. p
{ f" l2 h) U0 I2 }+ V2 }. x& o) T
int lh,rh,h;" w9 D9 a9 R- b7 f+ D& J# f6 b- N( K
if(t==NULL)
: y' [2 G j9 R; _, ^ h=0;
9 u L" g( I/ A- F9 C$ w else% o2 V/ g5 B/ S! L" p( e# Y; S
{, }5 p& k7 V* F/ X, D) L
lh=treehigh(t->lchild);2 F1 V3 a. D& U# X7 v/ E
rh=treehigh(t->rchild);
9 U* {: q, q$ R5 R# p7 ~6 ~0 R- J2 D h=(lh>rh ? lh:rh)+1;/ Q# p1 s" W! B* e) l7 H- C
}
3 ~* e, R9 b2 M' W' O8 O. M return h;
+ G V& n: x2 ~ u}</P>
. V: k9 p. Z$ `5 e- v< >main()# w x5 I( R+ a1 ^
{2 h/ }6 ^- k: Z5 C& R
bitnode *t; int count=0;
. @& G9 \, L ~ j9 k! {1 f int n=0;
/ N9 g) r6 O) U- {# ^0 G- X+ D printf("\n Please input TREE Data:\n");
' j4 r( W0 {, ^1 ]+ r0 G; e5 o createbitree(&t,&n);
3 I. w5 S3 l4 r/ o, a2 |3 w% w printf("\n This is TREE Struct: \n");- {& ?0 `! G# Y8 _ Z8 C
preordertraverse(t);8 u& }2 p) {" A
countleaf(t,&count);4 `& |# I. a& R) D' j0 m, R; T
printf("\n This TREE has %d leaves ",count);
6 t+ t" f$ k4 O& c( O) ]* C printf(",High of The TREE is: %d\n",treehigh(t));
5 c* j" d6 P' ^: |$ V}</P> |
zan
|