- 在线时间
- 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>
2 f$ q3 O* v2 q; X5 ]2 h#include <stdlib.h>
; E/ g1 O0 O. t( |4 E#include <malloc.h>
0 l0 t( j0 H' v+ B" c
# B: y ?3 Z0 x4 x/ ]. q* v4 X+ S, I; I- a
< >typedef struct bitnode
2 U4 j } _" v6 n* Q5 A! Y2 g{) m4 F: N3 f' [% a+ P7 g, _4 b8 t% z7 `
char data;1 `7 q5 y$ D! [/ H, M
struct bitnode *lchild, *rchild;
+ d5 y% n# R8 A& S$ E0 j7 o& K0 S* z9 |( ]}bitnode, *bitree;</P>/ y8 w, \3 K& H! _* f
< >void createbitree(t,n)
5 k* U- |' t2 x7 tbitnode ** t;, c2 \" {2 m8 A- B4 W3 l a
int *n;) C3 `+ t( C% `5 c( i4 C
{
3 S# H+ T, N# n char x;; ^, R u* G9 e/ Q2 C
bitnode *q; p4 [9 o+ Y3 }6 Q6 p$ c
*n=*n+1;+ A) N: v/ `4 s4 P( u" m d2 A, n
printf("\n Input %d DATA:",*n);' L" b S( e$ E- m9 Y# y
x=getchar();
) ~9 W; Q$ o( K) _8 v6 g if(x!='\n')
# V- a }+ P! e' @ c getchar();$ I/ h2 s7 s F; q8 J I3 u3 S* y
if (x=='\n')
& ?5 k! O1 B$ c e* c return;
' U. M& J0 ]: g7 h, \1 o q=(bitnode*)malloc(sizeof(bitnode));4 B v- ?" t1 R+ Z
q->data=x;; q j# f' P7 ^: J9 ~$ u( v7 i
q->lchild=NULL;2 L$ G* ?- I+ y# s
q->rchild=NULL;
8 k2 L1 R; B( ]" W1 p% d5 q *t=q;
3 t8 f4 }& ?9 B# K6 T6 x0 a$ 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);6 ~- t8 W0 q# N" |: \
createbitree(&q->lchild,n);
8 E0 o! l5 A" s0 J createbitree(&q->rchild,n); C* r: I, d5 Q' n) k& g
return;8 M# r+ f/ y* d+ Y' Z2 N( M
}</P>
4 O6 @. G4 \# R- m& h< >void visit(e)( t$ {1 ]+ X% V5 ]
bitnode *e;
) g5 }9 v% P3 i4 p6 o: O{
+ p. Q7 t" r4 @6 h0 K3 l printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
& V; v% C5 b( z7 c}</P>+ @# @3 b/ ]- h. j1 _ W
< >void preordertraverse(t)# `9 @1 Y: B6 g2 f( |
bitnode *t;
; r. _. T: V. T1 X! T+ {, t4 V! z; {{
. g v3 B4 Y. M! h3 }$ `7 I/ W if(t)$ ?3 C7 \* n9 @
{
9 X# q1 F4 j1 s7 @3 X visit(t);
: a9 _- D2 b$ P* S: W preordertraverse(t->lchild);& N/ S# b. N, _( L6 ~7 l
preordertraverse(t->rchild);
1 M: D0 H$ ^, n9 n1 e0 l return ;3 Y) k6 X( g* I8 D
}
# ^5 I# w5 o& A- q( ^; Z else
, c, E# \% Q; c return ;
9 B1 t( N! D7 j4 g7 l: c}</P>
7 {9 [; M4 F2 T& q' v& o< >void countleaf(t,c)
* c& \1 \* a) J$ K4 Q8 z: Rbitnode *t;
8 `+ i/ L- N/ D# g d1 rint *c;
' L$ \: Q, u+ e4 v+ w' \0 _- l% I{
, y$ n5 Y2 a Q9 R if(t!=NULL)
2 x$ r+ x- J, j, p) Q8 d3 ] {
3 |) W4 }- j- J7 b if (t->lchild==NULL && t->rchild==NULL)
4 A8 P! G* R3 u3 h0 ^2 s {! X& |% |! m8 G0 Z }$ j
*c=*c+1;
; V- ~5 N: c6 P' P7 x7 | }
" n) [7 P/ [* N countleaf(t->lchild,c);
5 @2 K: v$ c% `0 P! x' p" Z countleaf(t->rchild,c);
# p; N, C# v$ L% R% V }
7 }' U8 s$ P3 J* g& ] return;
- n, {* @0 Q% [7 q& l: ]$ M4 L}</P>
6 \) y+ \6 S2 @! r< >int treehigh(t)5 u+ J& {% I' W
bitnode *t;
4 ~8 s# N" }$ r{0 {( c8 i$ a: f: P$ p# L4 j! U
int lh,rh,h;2 m( F& Q: U) L4 U- Y8 ]
if(t==NULL)
4 G' V% t5 O/ k" { h=0;* }! ~" f- o, y# _
else
4 ~; i; U) M' v {% p) |; S9 h# p+ H- A# S4 j
lh=treehigh(t->lchild);
9 r6 b( `9 `# t) J* P$ P4 l6 N rh=treehigh(t->rchild);
1 K% N/ R& ~% Q" Q1 A$ v9 I9 n h=(lh>rh ? lh:rh)+1;
5 e% i7 H7 T2 J }
$ t2 I y3 t; H0 d$ o' I return h;
: a I& ?) z1 Y}</P>
3 H3 p8 l( @# I. _3 E$ B: J< >main()* {6 p5 B8 J, g) {& K: \
{
8 W$ p( \: f2 s: s bitnode *t; int count=0;# z8 l5 U: a& `$ X7 N- S
int n=0;+ R; i3 f# e# O& `& Z$ A* }- V
printf("\n Please input TREE Data:\n");
, w9 s6 j6 k0 u( {% b8 m# m createbitree(&t,&n);
/ Q% g/ I- @: R" Z: c& e& G( K printf("\n This is TREE Struct: \n");
/ b9 o) j) Y1 Y, D6 t preordertraverse(t);/ v( T+ s0 }8 h) k; F. ~
countleaf(t,&count);* ?7 k( y0 r1 ^* b* p; I0 h& g
printf("\n This TREE has %d leaves ",count);9 M" T, a' M' i3 b$ T( U5 m2 ]
printf(",High of The TREE is: %d\n",treehigh(t)); `( N$ x5 b3 N! e6 d$ ~' Y
}</P> |
zan
|