数学建模社区-数学中国

标题: 一颗很值得玩味的二叉树 [打印本页]

作者: 韩冰    时间: 2004-10-4 06:16
标题: 一颗很值得玩味的二叉树
#include <stdio.h>
, T3 M2 P: i1 Y#include <stdlib.h>" n4 g6 w! j/ y# [5 o3 C
#include <malloc.h> % X4 o1 l: b" s) O
9 J" J7 o& q" L, p. Y( _

/ H' ?# ~" k! I  h6 q( D. `<>typedef struct bitnode
9 L8 C' B( b! U{0 I( c( Q7 t- u; r2 v4 N8 o+ |
    char data;" `- l! B% u. T5 m/ u
    struct bitnode *lchild, *rchild;
4 M2 |. L# C* p4 T4 T/ }! u}bitnode, *bitree;</P>. p2 N) b( J8 }1 P
<>void createbitree(t,n), {: h  I% \' p: F
bitnode ** t;1 u8 M$ p2 N  b9 a( s
int *n;, s7 z( x" g5 `: `% g4 d$ Y2 B
{# q6 t+ U1 T, V4 ?5 |, F
    char x;# O' t7 ?# {( S! ]) @# s! c
    bitnode *q;! z/ L  w! D) ^+ l+ c
    *n=*n+1;$ I0 R( Y5 [, h7 ], _5 q. s# O+ p
    printf("\n Input  %d  DATA:",*n);7 r- z" m" L/ z0 U
    x=getchar();
; A% H2 {; O4 t5 M; d: ]8 ?3 X) {    if(x!='\n'): E7 R* S( T: ~( m, _7 d
       getchar();; n" R' c: `) h: K0 m
    if (x=='\n')! K! a: r# _  L9 K4 H/ E& E
       return;% e$ r! J$ R' w
    q=(bitnode*)malloc(sizeof(bitnode));/ w0 ]4 }; k: |  i% u  {( t
    q-&gt;data=x;1 h3 U& u. ^! I; \
    q-&gt;lchild=NULL;
4 T; q- x/ |6 g# d0 S8 q    q-&gt;rchild=NULL;
6 D2 U  A3 }4 a+ P% |* \* u    *t=q;
0 o' R4 O1 `, |3 {$ }$ L    printf("This Address is:%o,Data is:%c,\n Left Pointer is:%o,Right Pointer is:  %o",q,q-&gt;data,q-&gt;lchild,q-&gt;rchild);
: p5 c4 }' l, n6 N" Q8 I$ c    createbitree(&amp;q-&gt;lchild,n);' ]0 u! w; B, M
    createbitree(&amp;q-&gt;rchild,n);# B* W  d/ }: \/ ^/ \. B3 c
    return;
1 i4 g" g5 b8 p0 e5 e' J}</P>1 d) F0 W! ~$ U9 p) J; Q
<>void visit(e)
" h/ r* ^  G3 J8 m2 hbitnode *e;* ^$ M5 E# E. F
{
3 [7 q5 T* ^2 n) J: U9 ~    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);! W2 |7 S2 i6 ]2 i' y" \7 ?
}</P>
7 q- K9 t3 f3 Z" t' t/ c<>void preordertraverse(t)
1 }  x* l* f; Y  Xbitnode *t;
; _9 f& K! J1 W  h{
2 S2 v2 g3 v( m/ ^    if(t)
+ ]& }$ i! o4 i: J  Y) f# q    {
8 f1 q* |# Y+ h, f) q' Q1 P  U" h        visit(t);
$ G, i2 i2 }! D  i( F+ F        preordertraverse(t-&gt;lchild);
8 w1 i$ j3 g' _* A# X* |5 Q3 [        preordertraverse(t-&gt;rchild);2 _2 q1 B& H- Z5 O/ Y
        return ;5 M0 F9 ~! @. M. _4 v) X: _
    }3 L# H9 B3 x5 D; @9 H6 K2 G  N
    else
- ~1 Q( S& ^5 t/ t5 z8 G       return ;
, C0 M" c% D# w}</P>
9 ]! W$ u, H( K  L, }4 j7 h<>void countleaf(t,c)1 K" T# M. b0 d/ j6 O
bitnode *t;
$ N3 ^9 o5 M( S3 `3 K3 C# ~int *c;
1 u* c5 p+ W1 t9 J; Z{
- D* X- p- o, K' g    if(t!=NULL)( }* E! j$ z3 l$ k
    {
  \* S. }# Z) r7 G1 u- E+ M        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)' q- u! ~) ~- P' C9 Q: @
        {( I/ I. N& r3 p5 t% q& i1 k
            *c=*c+1;
* Q+ i; r& T" _        }
/ v$ x  d3 R1 R) P        countleaf(t-&gt;lchild,c);2 R+ |# I& i9 L/ g$ E
        countleaf(t-&gt;rchild,c);. O7 I" z4 ?% n' y. B  z2 e; e, X7 r
    }
( J/ b$ E( I' B3 i1 o* b9 ?    return;
3 n4 O4 c% M) t9 ]! S& n}</P>
" r# ^$ U! K4 _  z9 R- N! j<>int treehigh(t)6 B1 n8 S0 q  K$ G8 w3 }' P9 s7 K
bitnode *t;
6 w- g9 t1 f2 _{+ Y- V: A: A' G, N' m
    int lh,rh,h;
- H* m3 C0 {$ D5 \    if(t==NULL)
7 h: x% W; e4 |2 ]       h=0;: f( r$ Y* S% J4 f: `3 s) d- j
    else/ }4 C/ e( u9 {8 g: y! ?6 R
    {
. |' y* w- b% v% K! {' _        lh=treehigh(t-&gt;lchild);: d# ?$ Q8 J! X* Z
        rh=treehigh(t-&gt;rchild);
' K- r' R3 @/ y        h=(lh&gt;rh ? lh:rh)+1;* z0 V3 l% u3 M, |4 y9 D( R
    }
9 ^  m! q/ F6 j& v+ x  {    return h;
+ R% Q( E- x" K6 A  E$ F! h}</P>
0 i, S- Z) B* N' F+ K! w<>main()
3 v6 _& }0 o- o+ e3 }{
( _4 l# Q' ^* n% V$ p" t3 ?    bitnode *t; int count=0;- n# v5 A$ M' B, B; `# d
    int n=0;
6 b# G! E% O, \5 R* @, P% q$ n    printf("\n Please input TREE Data:\n");
3 y- R2 S! |* B$ e4 K2 ?! o6 X    createbitree(&amp;t,&amp;n);
& m7 D) b& L8 ]    printf("\n This is TREE Struct: \n");
: ^  O+ c  p. C$ K    preordertraverse(t);  ^  x: g" B) n8 W" t' G. x' Z
    countleaf(t,&amp;count);. L7 W0 M. f1 I# N- Z/ |
    printf("\n This TREE has %d leaves    ",count);: V2 B: R; ~/ D$ @1 h* b. R- b
    printf(",High of The TREE is: %d\n",treehigh(t));! K1 D3 A- Z# |9 p% Y$ r1 b/ T
}</P>
作者: zoologist    时间: 2004-10-25 10:07
连注释都没有,怎么看!
作者: xShandow    时间: 2004-11-3 13:51
<>不错啊。0 F( @( n8 s- p' z  K
</P>
作者: realyoyy    时间: 2004-11-7 20:20
就是阿  什么说明都没有 变量名也不标准




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5