- 在线时间
- 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>
; G: ^) t3 c- t& G- g+ g" m& P#include <stdlib.h>
4 d' r# d2 e1 U! T: g#include <malloc.h> % [9 x. {, D! P# P% w0 `
/ o$ e9 I0 H6 Q; X% P* _( U7 @! @" z$ ?" o! k. _- e
< >typedef struct bitnode/ ?& O, s/ p) X' y8 u$ {, G" ]
{
# v* s1 k$ z4 G/ j U, T char data;
3 r, R& w4 }. ]. Z# X/ g& _, n8 b struct bitnode *lchild, *rchild;
' ?% _8 U8 z1 a# Z& \( H% N9 \' k1 ?}bitnode, *bitree;</P>
! d( D- i1 l5 `3 h< >void createbitree(t,n). x, _8 A; y( ?
bitnode ** t;$ J& @2 u$ y/ ?$ ~# g6 h( z" g
int *n;
3 d% y; k* P% i$ K{
" X) d Q2 B' W( a char x;4 Z. U J. M4 g- d; ]2 I3 i( a
bitnode *q;
3 b& p- l8 d5 O# y* O* } *n=*n+1;6 X9 G1 T$ Q2 ]0 X* V
printf("\n Input %d DATA:",*n);. A- C8 z3 i7 t4 s8 r
x=getchar();
3 M/ m0 i" L, v if(x!='\n')" j; N( u3 @- P9 i3 v! P2 _- r
getchar();! x# t# A$ S) w* P) Z3 B( w
if (x=='\n')
, [1 C3 }( C% z2 s8 R4 R" T3 G return;1 U& I% r" R% d
q=(bitnode*)malloc(sizeof(bitnode));7 A0 P' ^9 F- m- T4 f- X& u
q->data=x;$ ~/ T# k4 w6 Z k v J2 j) f7 W
q->lchild=NULL;- f+ v: n8 z( @& o: S8 B8 Q
q->rchild=NULL;) A2 n9 R% C% t" W+ t: c
*t=q;4 l6 F- f# F) X# h1 u& z5 M% @
printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild);; l" U' K0 k7 y/ v/ v" f5 y
createbitree(&q->lchild,n);
6 \7 u4 X2 O8 a5 J4 m4 m* ]2 o createbitree(&q->rchild,n);
4 P4 d0 C9 l U9 n' C- `' \+ C. T return;
& a' p5 L& Q5 F) j$ \' ?}</P>& z5 \) j4 L" B; y% t5 Y$ _ U; p
< >void visit(e)
( D. A0 `" D9 n7 W4 ^ {! |& Cbitnode *e;
: R! \& O/ j/ |7 n' S3 f8 {9 ]{6 L9 b9 C# M$ P. f! z
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
9 X) T4 X' P6 f5 |9 }7 g}</P>
& P5 q4 _! p C* S; L" ?< >void preordertraverse(t)2 m7 A" L9 s, B
bitnode *t;2 x. R" D3 _- N* j; a) {
{
* J& T8 \5 B6 H% d& | if(t)) Y- m) H @" o' b' h
{7 c9 K! R& ~$ ^5 ]
visit(t);6 J( b0 r: l( G7 E5 f6 T. c
preordertraverse(t->lchild);
" A% ~6 ^- K; L8 N preordertraverse(t->rchild);; D' J/ `# U( T7 @4 i
return ;
- f" C& }9 o+ |7 R$ d8 g }. K g9 f/ m1 o# S9 q) a
else, @7 \% C/ M6 c/ }! v
return ;$ H( |; Q: ~, @, s# Y. X7 ~; \
}</P>
+ K+ l) m O& R% H) M( s6 F2 l< >void countleaf(t,c)! c& {( _2 F2 G
bitnode *t;
1 Y1 p' V) M- Aint *c;
2 c, d/ Q% Q- e% T) M{3 A5 i4 r9 I6 R7 ]5 o% _
if(t!=NULL)# O9 Y6 e7 a% {- e, A. w
{+ N) `9 l# }. _
if (t->lchild==NULL && t->rchild==NULL)
$ B$ n1 v+ n, Q1 L; i {
9 x! S3 L% m# Q" O% d0 I *c=*c+1;
5 \0 F% f% B! ~' s3 C8 P _) | }5 v8 b- I: K \1 M
countleaf(t->lchild,c);% H3 B$ C- ` j7 D! f5 W! U
countleaf(t->rchild,c);: I( j# ]. L. a8 ]2 j
}
[( D* M6 B4 @9 d return;
" }2 D( N y( i! Z6 w6 a6 D}</P>: B0 v$ u! }: A2 O. S, y: T
< >int treehigh(t)5 I7 d0 `& ^9 m( ~, r
bitnode *t;! e" V2 H: Y; y7 V! }( P
{, e- S' |' f1 `5 ~2 h6 f* B6 R2 c7 X3 k
int lh,rh,h;
" H. j* {) d# J1 \7 y/ R, f if(t==NULL)& [; U- P; U _
h=0;- L, ]1 V# a' v) z# ]3 ?
else
- S7 S* {# @( w+ Q& t- Y: ] {
3 u6 y/ ^6 P4 C/ A( G lh=treehigh(t->lchild);. f' Y2 s4 P! Y" {
rh=treehigh(t->rchild);
) W$ c1 x, {! ^ r- [ h=(lh>rh ? lh:rh)+1;* g8 i4 {6 n$ ?2 [5 S
}2 I% D3 g, L9 V. \: A6 {
return h; |9 k' D+ ]/ g% S$ B
}</P>
8 ~0 E6 u" w& a3 T. ^& {+ Z< >main()0 {( Y. b/ Y8 n2 k$ {$ _7 D
{/ k6 j& |% Q# P/ L5 o8 \" g' H
bitnode *t; int count=0;+ o- Y5 Z4 f' A6 q
int n=0;
5 _$ F3 o( a* q7 S printf("\n Please input TREE Data:\n");
/ f8 F0 b% i( `( Q" B* Q createbitree(&t,&n);& z+ k2 X' u4 O3 S, T% {# o+ F
printf("\n This is TREE Struct: \n");
( {% m% \+ ^1 A preordertraverse(t);
" S- ?( e1 H I& _4 w: ? countleaf(t,&count);* x3 g( I! _, U: c; N
printf("\n This TREE has %d leaves ",count);
: S! V) R3 F$ b# }, P* X2 W1 X; { printf(",High of The TREE is: %d\n",treehigh(t));
) N$ u* L' ^! T7 m: q( b}</P> |
zan
|