- 在线时间
- 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>" }* M2 d( q/ q: S% G& U3 g
#include <stdlib.h>) N# K2 Y# c1 L! y
#include <malloc.h>
4 S/ o3 `: f7 E5 ?/ P
+ Q; H6 z; `' p' M' Q/ E, c( @ ?' u( w7 r
< >typedef struct bitnode
: E- R7 S9 ^& X8 m& \' R, P{) t4 e9 a! C, [- [3 n
char data;
. K2 _3 |! m* @; Q: e0 n struct bitnode *lchild, *rchild;5 r; D+ b6 [$ y* {2 ]* @
}bitnode, *bitree;</P>
* J, n4 U4 z( l$ x; S+ k< >void createbitree(t,n)3 C6 l4 O0 f" I# j8 Y
bitnode ** t;
e% h" @; r1 w; ]) U8 l: mint *n;* c1 v8 n. v$ }. L6 K
{
* N+ [# c% q/ Y j! ^; \ char x;* ^4 z% Z- f) K+ d( G, y
bitnode *q;
: ~( E; O' B, B4 H *n=*n+1;- H ?& `4 U: e7 J7 p/ y6 P7 q
printf("\n Input %d DATA:",*n);
# t7 o J6 ]$ {# R x=getchar();
7 o! w6 V8 t U9 ] if(x!='\n')5 R) K9 T% ^: O+ ` d8 ?
getchar();
3 Z9 l( t6 K' i9 i7 W4 k( a3 R, a if (x=='\n')
, I# `! D2 f/ Z0 _' N+ K return;) A$ Q# u' e: a R
q=(bitnode*)malloc(sizeof(bitnode));5 [, c4 S' y A; g5 b" u
q->data=x;0 d y" G/ N/ r" f
q->lchild=NULL;" o0 } j8 z3 k
q->rchild=NULL;# n( M x6 a7 ?
*t=q;
' e. i2 N7 z! t printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is: %o",q,q->data,q->lchild,q->rchild); z& y i3 X, J. Q1 C
createbitree(&q->lchild,n);
3 b! w0 M5 Q' t" X9 ^8 H7 \' F createbitree(&q->rchild,n);
* t$ M% T7 r! H# W9 `4 N return;* b- } x; F' {
}</P>
' m; R: u; z3 u2 O% Q: a< >void visit(e)
2 K. }3 h' g8 b( Mbitnode *e;+ b6 L* Q0 x6 _9 o# a
{6 _* z. @% s5 m4 c
printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
+ P5 }& O: X7 i9 z% c; @}</P>& |4 T# J3 z* \! m0 G B; `
< >void preordertraverse(t)
, E8 v; a/ B2 Y" I1 H' G# `bitnode *t;+ j8 J$ `, P) x7 S7 K" q" ~
{- w+ j. j" J& J+ s6 K4 B0 p1 I
if(t), Y( g ?% Q* Q5 ]1 f- l
{! S1 x% A0 i: _6 _& ~
visit(t);
( t$ ^3 l- S& Y r9 M" b) P; F preordertraverse(t->lchild);( u* d+ F& t/ p! N) `( K; h6 e% W
preordertraverse(t->rchild);
+ r4 v( t4 x6 F5 Q& n return ;
; I9 Q6 g+ @9 H' o& ?9 ~ }
9 B6 @4 @- |% n5 M0 i else2 U+ [ ?3 |# _' f& w) V
return ;# c0 a% @& `# J* a5 O
}</P>
9 N/ S# ]4 [7 ]8 a4 I5 z< >void countleaf(t,c)
2 T: ^: v) \9 S% k1 I2 B" hbitnode *t;
! i, A' ^" R$ P! c" o2 E9 Sint *c;
' ^1 y8 S* P) I3 g{
1 {9 z7 i. @% P) n if(t!=NULL)9 |. a: h3 ~. k6 J5 Z, W" J
{
; l# w4 R5 d1 r8 b if (t->lchild==NULL && t->rchild==NULL)* {3 n5 y/ r v7 r: e+ {7 ^
{
7 r1 O5 H7 ~4 z( @* z2 A *c=*c+1;
7 w4 c6 U; A% s0 e) I }
! a1 H7 q9 d3 G$ D6 q* P6 [) A# x countleaf(t->lchild,c);
( r. X0 [& q* T, j: f( t! G0 \ i countleaf(t->rchild,c); W$ U% Y6 |( G) o8 \* `& s( G
}. y# j- U& Y$ M3 Y5 i
return;) W; a, ~) }7 A2 {9 @" |. b
}</P>
+ ]) J: C& i( D( }& `< >int treehigh(t)) d \0 P# K' ~: d
bitnode *t;9 h" b: i* Y ^6 U1 q8 V
{
. J0 a, d# C0 L- [" f& w7 D. X; @# ] int lh,rh,h;
2 e' M6 |8 `, Z if(t==NULL)
* R/ J8 F' [, w2 q h=0;
4 d7 o0 N; {- }& o; Z/ G else- _' s# [4 z( j7 ?: U" X
{
1 t% P' J( l9 ] lh=treehigh(t->lchild);
( c7 B4 L( E" m( f3 x# Y rh=treehigh(t->rchild);1 w$ @+ R2 C+ y3 w
h=(lh>rh ? lh:rh)+1;
: P x& E% O% @% a* j6 W }* V" V @8 |4 X5 |/ l1 B/ S9 i7 `
return h;
* y& M' W4 `0 j' G( r% c4 y}</P>% l! h9 i+ R0 u/ D' B" ~! R
< >main()
, A& l' K- t; |* s/ D$ g2 T{
; O6 {# I& Y* u" @# R bitnode *t; int count=0;
/ j$ x$ j) W* I: [# z int n=0;
7 T1 b; b \9 j2 ~; N printf("\n Please input TREE Data:\n");
; Z( A9 u0 j a# E$ R createbitree(&t,&n);
! ]/ K" h8 j, \( |5 Y printf("\n This is TREE Struct: \n");. L. ?, i. a' L$ A
preordertraverse(t);# f* C- N3 q6 {( T( b8 ]
countleaf(t,&count);3 R' Z) Q% H& v0 c+ [) f8 o
printf("\n This TREE has %d leaves ",count);
! N' b( q/ c- ~) X printf(",High of The TREE is: %d\n",treehigh(t));) O: r+ R! v# m* \, `9 d/ {
}</P> |
zan
|