- 在线时间
- 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>; [) ]; u3 G: f* n. g, V2 M
#include <stdlib.h>
; `0 l! k5 v+ g- [1 E- Z* R0 f#include <malloc.h>
' M& n" I$ |3 c* q8 A% G: R' f" Z
2 I e _. Y" `0 s% X: l# ]
' N) m/ t$ D5 S6 h' J- ?. z X- T% U< >typedef struct bitnode: \$ {/ C, `% Y- T4 A
{/ _: }: F6 s a& ]+ a9 Z
char data;* K8 I$ u9 }, U2 t# a
struct bitnode *lchild, *rchild;
* c% |% y% Y( i" D! F}bitnode, *bitree;</P>
6 i" p5 ]2 M+ A" \< >void createbitree(t,n)/ a* \$ C. g% e9 K5 X' ^- L- ~ l5 q
bitnode ** t;& Q, w, T" ]# c0 ]9 y! n& m% K
int *n;9 C; H* s1 R% r9 ]' p7 G% G# v- z- ~
{4 a. Q- P6 \6 U3 u4 e% {! O; Z
char x;% S6 {- Q+ p/ e/ I$ }- ?4 h* l
bitnode *q;
7 |& |! t' f w8 F *n=*n+1;/ V6 \) v7 \6 v) q' s3 Z5 P0 \- z
printf("\n Input %d DATA:",*n);
% R9 q/ m# V+ H- Q x=getchar();. X( E; j; t9 G6 E* E9 B8 d3 H
if(x!='\n') K) G5 a8 }/ u! V0 I6 @1 N
getchar();
1 i7 ^$ s' j) e% D9 m8 y# F8 M if (x=='\n')
$ ]' ?/ |2 j+ d, q/ f return;
Z$ ]! n' }3 w; a+ } q=(bitnode*)malloc(sizeof(bitnode));
4 r* }* J6 t! q" j q->data=x;
4 X7 T, P; F- s% P q->lchild=NULL;0 y" D0 ]! V) j+ v- ^7 ^; M
q->rchild=NULL;6 P! J7 L+ h( R" G
*t=q;
7 a" s# l# P- j. U+ J' 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);. @7 v# x9 O8 b5 t3 S) v
createbitree(&q->lchild,n);
4 V4 @; k5 w1 f1 Y! p% v createbitree(&q->rchild,n);
; @ ?* H5 N6 g2 X return;
]) F. Z7 f( E) \/ X}</P> G. t+ g: k' p! o8 s
< >void visit(e)# T! s) U2 ~, i
bitnode *e;( {5 Z8 Q+ M8 C8 Q0 Z9 H
{
* F( v3 X$ o, V7 w printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
. H3 E/ y* i& I: _}</P>
: @! S6 {% S9 `) {: L< >void preordertraverse(t)* i3 G- K( i% N o4 Y# w+ W b1 \
bitnode *t;( @- o9 _5 G5 c8 u- A8 ^" e7 Q" r
{
$ D" t* C9 k3 L$ v8 a) R7 S: K if(t)( j5 Q. X9 W3 z/ A: i- N; G0 {( q& ?
{
1 n3 G/ [, J2 ?9 K- K5 Q, j- r$ P visit(t);1 g1 u$ c' a: k. t- g! J
preordertraverse(t->lchild);
. @& K9 u$ F$ }; P- ^9 e% k preordertraverse(t->rchild);! v% f+ T7 w' M2 r4 w* O$ @
return ;0 o2 v: _; [# T1 g& o4 _* O" _
}
; X. f* i$ J; j' l else
) V6 A: z3 `( D" f8 v: q return ;
' b1 a; ?" F* T2 R$ k) Q}</P>; q' u+ D/ T0 R+ k% e+ W
< >void countleaf(t,c)
6 U# W6 D" N1 i5 H! e. I, z; sbitnode *t;( d& s" ^9 [( v& N+ ]$ t
int *c;: e+ Q- ^' i. x6 Q
{
~4 t- n( \# Q- R3 [3 G if(t!=NULL)
1 z9 } ^( _( u3 b7 \: Y1 u {
, t7 z% B- R" d2 y, \/ b! |0 i; J if (t->lchild==NULL && t->rchild==NULL)! W R) Y, y% Y! J4 Y1 I" @) S
{
8 ~4 h" B( o4 ^1 P5 j: M6 q *c=*c+1;
+ S* P! }; D! _" N9 u3 a5 b. t- H }) Q8 b$ o: R5 ]9 {( D2 h9 @
countleaf(t->lchild,c);
5 R6 _9 x1 ~6 \+ {$ T9 t countleaf(t->rchild,c);
, ~ C$ [# L+ g }0 R( s; x. G! `
return;' e5 f) A+ L, _: X2 T$ y, t7 d& u
}</P>% v* K. c A. R% u" O( s0 Y# Y6 M7 J' v
< >int treehigh(t)
% C8 Q8 z- X& |, P# \bitnode *t;( X; X* L9 u4 \9 ]# z0 p
{' `- o& r$ y& }' f3 ?: c9 x8 V$ M. w
int lh,rh,h;
5 I+ \( K& z/ U) p0 c \* b if(t==NULL)4 g. T! r( X* V% g# H) |
h=0;
1 x- F( I9 V2 w% s# K- _ else
2 m1 W" d8 \9 N6 O {
1 L4 C4 j8 f" e% R( d lh=treehigh(t->lchild);
, e: @8 y% a; z rh=treehigh(t->rchild);9 b" E N# m5 o; X) z+ }7 d
h=(lh>rh ? lh:rh)+1;/ x8 p1 z- F$ S4 r2 [% H; `
}4 `4 o; N7 M _2 u6 f9 |0 ~. E
return h;
8 h) a( l- d+ C) a* u( L}</P>6 [ y( L N+ I a& ^! [+ g7 h! E
< >main()
' ]0 K2 q& i+ W3 l) s{
0 s: j9 F' B, v7 J0 X8 R4 v1 m' R bitnode *t; int count=0; e/ j8 J! B3 I) L
int n=0;& c: E5 Q* e) R! Z% c
printf("\n Please input TREE Data:\n");8 I4 x# `3 d, Z* C& S9 z* b7 q
createbitree(&t,&n);) B: _/ v+ Y: Q, i8 h: u
printf("\n This is TREE Struct: \n");$ X. V% H/ u+ i" o, M
preordertraverse(t);
* u; x/ ?! H9 i6 D% z. d countleaf(t,&count);) Y8 p2 R" z$ b) n3 Z L
printf("\n This TREE has %d leaves ",count);# _" H4 v! x# F$ O0 [! ~4 ]
printf(",High of The TREE is: %d\n",treehigh(t));0 H# \$ d$ A7 l/ y4 x5 }
}</P> |
zan
|