- 在线时间
- 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>" x$ T" `* D% i) d! g4 D" G* ]
#include <stdlib.h>
8 o4 p3 t/ O( k. _#include <malloc.h> 7 u( I# p/ V2 M% q/ u6 D5 r
, l5 T* N/ }; P$ q8 {0 ]) N
3 g; G ?& `' J! o3 a< >typedef struct bitnode, k# c/ d* k5 y- z) R
{/ {. J& e P# A& X9 G
char data;# V" W. r$ p1 V) R; v9 n/ \# f
struct bitnode *lchild, *rchild;
; j9 }/ o9 b6 R4 l. U* i}bitnode, *bitree;</P>" p9 z! P- v( H1 J1 X8 _5 o5 K
< >void createbitree(t,n)
8 R" z4 T/ E& s- k/ Z# h& \bitnode ** t;
+ ]- b0 Z! l' F Bint *n;
. X) P* @# W3 h3 C{
2 }2 P# c7 j( q( `! D) t5 f* j char x;
' n6 D6 a0 L% ? bitnode *q;
7 q+ G* M( u V4 t( {# B' w *n=*n+1;$ q0 i0 L' w# F- B
printf("\n Input %d DATA:",*n);
1 G8 _/ O, X* n" m$ j1 p# `; N2 S, O x=getchar();
+ J* `" F7 T5 l+ S& [* [- J j if(x!='\n')# r% d+ _0 g3 v* t% r: f
getchar();
4 \. H. o( I; F6 o y* M( Y if (x=='\n')
5 e! r' C5 ~2 d* d return;! G3 g1 ? x) G* \' H2 o) K
q=(bitnode*)malloc(sizeof(bitnode));
$ c4 M6 r0 J6 c% E# i6 e- l$ G q->data=x;% O5 L" R( J2 p) A2 `
q->lchild=NULL; v z# d% k4 x& x! Y9 x: B" U
q->rchild=NULL;
$ }6 `# R* |6 v3 n+ a *t=q;
$ F- Z. Z d( ]" i5 H printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);
! Q7 y2 f1 u; A- k createbitree(&q->lchild,n);
; [2 A8 S/ i" `/ @ createbitree(&q->rchild,n);
6 a1 X- o: x, P1 H& L: V return;" \+ i- _5 l" \6 ^) L- N k
}</P>
8 {' ~+ T% v3 {( e; S5 x9 j< >void visit(e)
7 L* R4 j6 O. f+ t; S. V: }& ibitnode *e;5 t& V' M' P: n8 t/ u9 [
{) u1 ?* I0 [4 ^$ X
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);0 j1 \8 R' e4 N4 P" I
}</P>9 b. P; U3 t ^: |& n3 H" Q5 W
< >void preordertraverse(t)
7 a- g$ \* ?1 s# K6 @; r$ u# ]8 abitnode *t;: m1 E) V: F7 s5 z8 s r: C
{
) \# r" E; B# M0 n0 t$ w if(t)9 _" M, z9 E1 v3 x0 {/ K
{
9 u; A# K4 e. m9 I* A- ` visit(t);
! ?* @7 }' m7 M4 S8 |0 T' ^1 } preordertraverse(t->lchild);* t9 v' H1 M! V. w) d& P
preordertraverse(t->rchild);
4 {$ Z9 e2 Z9 _. d. j return ;* O7 [4 `7 E; k# q) l& d% @
}
1 v) l [3 A! N) Z* M u else
3 n$ f! S; H) m; U F# G) H! p) Q; O return ;! R/ d8 C* o/ \
}</P>5 o2 h: {; P/ X, L$ j
< >void countleaf(t,c)
! r) j% q; g# k* g* ?7 abitnode *t;: g2 J) j3 }2 p
int *c;. x# }2 e% D( B2 I H* S' v2 d
{
' F+ f) n$ U" n if(t!=NULL)
2 G7 m0 S9 A! w v% w {
6 f8 p& g9 x9 g6 t if (t->lchild==NULL && t->rchild==NULL)
\. k" M4 f; t7 z' B# F. ` {8 |( [5 k. V. x6 k
*c=*c+1;
5 q% }! M+ \; C% ~ }( y! [" P/ Y; B, h& c. C# T
countleaf(t->lchild,c);5 T3 g0 H- A. o
countleaf(t->rchild,c);
# |4 U* a" Q& S: J2 N7 v }8 P7 z5 M, y# M! t4 B% \' H1 x
return;; U+ E; }3 Z! r6 }
}</P>
! W% o" f3 i' r1 }< >int treehigh(t)
8 I2 J' O3 }- A1 i% T- {bitnode *t;4 C) L$ E# Q j) Q
{' [ W5 h8 `- M" C# `7 r9 u% c% G
int lh,rh,h;/ Q% t5 x9 {" t3 c' S# S# N9 M
if(t==NULL)( \0 O4 q" H. P2 }6 X: h! H( A
h=0;
# n$ L8 a# `/ w& N1 O! { F else
% ^/ P' r) H& x$ u9 ?$ e {
0 Y8 B) C5 |5 u$ d' b1 k6 T lh=treehigh(t->lchild);' H1 Y9 i9 `& k7 g0 v
rh=treehigh(t->rchild);
% y0 K$ ~( W9 g h=(lh>rh ? lh:rh)+1;3 y) K- X* H. c* m
}' c7 E# J! R Z; y! H
return h;% H4 L. r; Z2 d. x4 p2 l: F
}</P>2 j7 A* r! u* H8 Q) J! O7 M1 M
< >main(). @ p$ c7 K# t& u' H
{: z7 t3 l: s# w4 q! f
bitnode *t; int count=0;
$ [' N" e S+ v int n=0;( S" K/ G8 `( }2 p! D+ S( A
printf("\n Please input TREE Data:\n");3 n3 D& q9 s0 J/ K: ]5 r" l
createbitree(&t,&n);9 N, w8 X" T; N3 }; Z
printf("\n This is TREE Struct: \n");
: w# ^1 q9 ^+ Q3 u/ N+ V' L preordertraverse(t);
% X& G7 L& f6 }3 q, v9 Y4 `1 F countleaf(t,&count);2 V1 _+ [7 n! [
printf("\n This TREE has %d leaves ",count);
9 ^- X) Q- o$ s& S& R printf(",High of The TREE is: %d\n",treehigh(t));% b# [% h$ }+ X# m: x
}</P> |
zan
|