数学建模社区-数学中国

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

作者: 韩冰    时间: 2004-10-4 06:16
标题: 一颗很值得玩味的二叉树
#include <stdio.h>0 u0 ^+ H$ `  a* c8 W) H* P) ]  g
#include <stdlib.h>) I& W0 N* c* X+ `, U3 a
#include <malloc.h> % E. h, P* L( P/ l- R. x4 @
/ r( s- b+ g  G1 S0 a8 K

8 B# _& t* P2 V; W5 y/ O<>typedef struct bitnode3 Y, @. F! q5 H& s1 a2 \( c% V6 ?
{
6 {; \+ }% `! N% {1 q    char data;
1 ?5 N* }7 x7 e    struct bitnode *lchild, *rchild;
& I3 p% j; A% {. ], c7 `% V$ U! A}bitnode, *bitree;</P>& Z- D- M, ?; M( Z' U3 [" {& J8 z
<>void createbitree(t,n)' @1 ^8 k5 I. }8 ~% I
bitnode ** t;
% H5 w* u/ h& t: B- J6 P' z' Y5 E* Gint *n;  R7 F. r7 f& L% p- ?) P9 s% P
{
* T; ?% u9 i9 U1 W4 ^0 u    char x;. f  S5 k3 j" m. O  a. _; F6 E
    bitnode *q;
* d6 L$ z! y+ l! A/ Q    *n=*n+1;) G; ~! w4 `# B3 l' B
    printf("\n Input  %d  DATA:",*n);
; L! K, j# a& w4 x$ g: u* t( X5 I    x=getchar();
8 l4 m2 f6 f$ d4 X    if(x!='\n')
' b; `* Z! ?5 h7 E       getchar();
! V6 n/ K$ S/ X- P    if (x=='\n')
$ i* Y( x: ]/ l1 X       return;
: G  F2 ^' x1 E1 {' C% B    q=(bitnode*)malloc(sizeof(bitnode));
8 V  r& _; f* B# V- r* I    q-&gt;data=x;
* E" C4 h, l6 E; n( Q1 i' F    q-&gt;lchild=NULL;; z0 V+ {) _0 m/ g2 J1 A( a  b
    q-&gt;rchild=NULL;3 [0 Z2 N5 v8 y# |
    *t=q;
1 k% I( O, }4 B  x- r- Z    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);
, B/ `: l2 Z6 x    createbitree(&amp;q-&gt;lchild,n);+ O* R' \% R# x/ i+ [8 ^6 Z( p
    createbitree(&amp;q-&gt;rchild,n);
4 d& n9 |' B! m# v: w$ K2 ^    return;
1 p* X$ `# Y! X% G. Y# Y( N}</P>, H0 n. Y* T) @, R5 R
<>void visit(e)/ |$ K, _4 |% ]: v; C
bitnode *e;: f: l5 K. Q7 u6 r. i8 @
{0 `% Y+ \4 ~7 ?
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
/ {: ]- n( H" Z' E- n# k( z: C}</P>
! @/ n1 z5 x8 N8 n6 y5 v2 V<>void preordertraverse(t)
- [" V, i  ]8 Y; c) ?. \1 {" B+ Ubitnode *t;! J& S* ~( A+ P6 S6 A6 X2 \6 C$ X
{
9 J9 {' K' ]2 \1 A+ s: h    if(t)
' L7 L/ S9 C9 G6 v* d; a' m    {
" F4 P  Y9 o) [" \        visit(t);
: I+ V) o1 Y2 R, b0 Q1 O        preordertraverse(t-&gt;lchild);
" w2 I. i' D9 `1 D$ Q        preordertraverse(t-&gt;rchild);- U0 f' {4 ]3 m2 C
        return ;
5 X4 v: j5 a) \' q    }4 D3 C1 T: Y% H/ w/ H
    else( d% \9 y; S8 I  h' M& x+ H
       return ;
( X& F9 g% g0 i}</P>+ n' y& r6 r6 l
<>void countleaf(t,c)2 D1 O) ^' J& i2 s4 y8 J
bitnode *t;
5 r, ~# v* n6 V+ f8 t% Y  Iint *c;
6 M) d# ?( t# \, X$ D{
& o# T% R( x( Z2 [* }% r. x    if(t!=NULL)4 d5 ?9 \0 d7 I4 E
    {
. g! e9 s  `" L9 s$ d  t1 v        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)' }  N5 C3 N1 v4 c( x, L5 v9 C0 I
        {2 l8 p: e) L# o% V/ C) B# [9 y
            *c=*c+1;8 s0 B3 t/ d% O; Z
        }
  h3 P2 j- d! D5 f0 k9 J        countleaf(t-&gt;lchild,c);; B) b, _" ]. \
        countleaf(t-&gt;rchild,c);
# [' d3 i' r+ Z0 o+ `8 h    }
; ~+ A. J* X& w* K5 U, p& u    return;5 {* ^; E5 Q* c% P6 }( z) W
}</P>
1 i  r/ s9 _: p4 d" t4 j0 n  \<>int treehigh(t)4 t' a- l, L/ v' q2 m: E- W5 w
bitnode *t;
. S7 E- |1 K! H8 @1 v) ?{6 X/ a/ X8 e( R. f: E7 m! Z
    int lh,rh,h;0 d- R4 }5 B- l3 I
    if(t==NULL)
: Z* \0 D9 B- Z& ~       h=0;& ]/ l# a, X8 e- W/ ~# V  e2 R
    else
  l' }: E1 d! F, @    {
& H$ b$ [- U+ }! }" K        lh=treehigh(t-&gt;lchild);
2 a! c: f$ P+ {% Q        rh=treehigh(t-&gt;rchild);
, U( t6 t9 d" e$ N* {: l' T/ @        h=(lh&gt;rh ? lh:rh)+1;
$ }! r" q5 i& P    }
. O) ~  d5 q( O8 Q7 W. w" v    return h;
! |$ |# u) S4 T7 y, S& g2 z}</P>
" f, C; q6 I: o7 @+ M6 j7 `" y1 P8 y# |. w<>main()
; o/ S1 \2 M0 M; S{8 u! |1 n! a0 }7 m* D6 ]
    bitnode *t; int count=0;
8 j' t8 @5 }/ z, a7 v2 L    int n=0;
  l$ Y, m6 X: z  x" b0 ~! D    printf("\n Please input TREE Data:\n");! a/ S  @- v* K' E
    createbitree(&amp;t,&amp;n);
. q* y6 s3 B) e; Y8 J: ^    printf("\n This is TREE Struct: \n");: r1 ^& V, C: g% n- x' E& K
    preordertraverse(t);
3 X9 k4 v/ W& D    countleaf(t,&amp;count);
$ v: K# W0 z* N    printf("\n This TREE has %d leaves    ",count);( _& W9 k3 D% }5 b
    printf(",High of The TREE is: %d\n",treehigh(t));
/ v! x0 p  B* x! U}</P>
作者: zoologist    时间: 2004-10-25 10:07
连注释都没有,怎么看!
作者: xShandow    时间: 2004-11-3 13:51
<>不错啊。
% s, [% S4 ~7 ]7 Q9 O/ o1 K</P>
作者: realyoyy    时间: 2004-11-7 20:20
就是阿  什么说明都没有 变量名也不标准




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