数学建模社区-数学中国

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

作者: 韩冰    时间: 2004-10-4 06:16
标题: 一颗很值得玩味的二叉树
#include <stdio.h>7 D3 w! y) x8 j& Y/ g+ A0 }
#include <stdlib.h>4 B3 _) w4 U4 `$ @3 ^) R; _
#include <malloc.h> 9 s8 F* ]8 m/ n% q4 C1 q
- u# e+ O& F# L6 P

- q5 f8 S+ F0 a8 O<>typedef struct bitnode. y; n7 r+ j$ f% M
{
* z/ {) g; }4 t# I    char data;
( U7 z3 r/ ?2 ~$ P  ]0 A( l# Y    struct bitnode *lchild, *rchild;! [% X( G, ~4 N1 S' Y7 o' x* @
}bitnode, *bitree;</P>0 I+ P7 L2 o% K6 ~5 q/ T2 e
<>void createbitree(t,n)
% }# }: k$ O9 n! @  V  b1 Wbitnode ** t;* _  F0 L2 F* Q2 |7 h9 Q
int *n;! [' f$ M% S6 Y0 G6 j
{" }% w% Y' ~3 y# C* ^( m6 r
    char x;; s4 v* @% A) o3 K$ T; [/ _% O
    bitnode *q;2 Z5 n7 H; }7 a3 _
    *n=*n+1;8 i9 ^7 U& i! R
    printf("\n Input  %d  DATA:",*n);% R& x# B: q9 \/ R3 A
    x=getchar();: b! R! ]' _1 b' ?# ~
    if(x!='\n')5 I6 n7 K7 D7 k' w
       getchar();
; y6 r: t3 v9 J- y  T: ~    if (x=='\n')
/ H- o9 r4 C4 u8 n! S       return;
" g/ Z3 W; p1 D4 x    q=(bitnode*)malloc(sizeof(bitnode));0 ~* w9 t$ d$ _- J( c; a
    q-&gt;data=x;
' l! f# T! R9 e. v# S6 T+ z    q-&gt;lchild=NULL;
# R  I- ?) e2 p" j4 ^; j    q-&gt;rchild=NULL;: V9 V8 T) M; i+ R- U
    *t=q;
% M! |: n8 @: r; d/ K8 v% S9 L, 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);
" d. D* x2 b0 V# L) M, R/ E" Q; C    createbitree(&amp;q-&gt;lchild,n);  }& `2 X0 ~/ i# F5 f! X, b, m2 @
    createbitree(&amp;q-&gt;rchild,n);5 G2 ^; ~/ ?( h3 L- y( Q  f% U
    return;" L- A7 \9 L7 q: d. T& t
}</P>
* |1 A: F9 p( d: |<>void visit(e)
7 \+ T1 s& i. |5 Zbitnode *e;
& n, D; `2 ^; p4 l+ F{
- R& F, q& Y& k, r9 ^# Z    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);  P9 k  F, @" g8 @& \" G9 _) W, ]
}</P>
- ]3 z' z9 J7 N8 q! [7 f1 r<>void preordertraverse(t): Z' O) [7 k( u
bitnode *t;) m6 ?1 E" M, c  e
{
3 V' [' {8 N, N- t2 a    if(t)
( n1 x/ P  ^( N7 s  u& ?" b3 h( A    {
: @# w  x) p) p3 q/ s% k$ b        visit(t);
- Y0 C' F0 _! X2 C3 Z        preordertraverse(t-&gt;lchild);( w! g0 n* e5 O2 K9 c3 @9 k
        preordertraverse(t-&gt;rchild);
' S8 G8 V# p6 F6 P. a        return ;% V9 x( c, ?3 s  y( b2 ~* A. {. r) \
    }
( i- `3 l0 v5 y9 ]6 p3 m& r: q" e    else
6 x1 m  |& g  k0 r8 ^3 t4 Y4 {) t       return ;' ^* }$ X3 l$ t& M
}</P>
6 l: u$ S$ E0 y5 |* E" l9 o<>void countleaf(t,c)2 g( w" \* c, j$ h
bitnode *t;
9 h: C- ?# Q- W5 m. D7 Pint *c;, j- h! S6 \- ?7 i  m7 W# u
{
( w, `/ g1 H$ I, h) L* u: L1 \0 h% X    if(t!=NULL)$ Y# D3 L  U4 V. E* P( g
    {
. H7 I# |% Y8 q        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
7 J( |4 S/ `4 n1 J1 J: R( Q        {6 e6 W& H: F' R8 A9 B# G
            *c=*c+1;; h# e8 o1 n% ?$ K, L
        }! w* k$ S" r8 P5 y* V( l  S9 t
        countleaf(t-&gt;lchild,c);
1 b$ J7 P7 f4 q        countleaf(t-&gt;rchild,c);
6 m5 e) W- n* g    }; h' t) [6 O& w8 e
    return;, K, {" \  t' i# Y4 ^
}</P>; Z( F' L# T9 X* d5 \
<>int treehigh(t)
) a1 k4 X0 i& T+ ^3 A* l2 Bbitnode *t;
- w! F. y. ~# L5 R! o8 k{
% K; y" D! F9 Q7 m: j! @% J# T    int lh,rh,h;$ F$ J1 D1 A9 _/ U- q. L
    if(t==NULL)
, y" t  I- F, S7 E+ z, Q       h=0;
" ?! \" a9 S! K1 W' b    else
  k; m2 |+ p/ N) j: w8 f) V% j    {
( `6 ~" M0 _8 A9 z( l        lh=treehigh(t-&gt;lchild);3 S6 B% E" H+ X3 ^5 K# o6 s( `
        rh=treehigh(t-&gt;rchild);
4 R) R% N" s9 M. |2 p, o& T        h=(lh&gt;rh ? lh:rh)+1;/ n# m; `" F% `8 O6 p
    }. C6 p0 F0 Q1 m: {' T; D
    return h;+ S3 v$ L4 l6 m2 Q; x7 y
}</P>
  E1 \" d! ?  }/ @) B<>main()
; l( c5 s9 O% Q5 l# U9 S0 ~{
% f$ \7 [3 @9 G; g$ S! R! Q    bitnode *t; int count=0;
. p6 m9 [+ E$ A9 G    int n=0;( N0 o  `) [) u( b3 K+ m  C
    printf("\n Please input TREE Data:\n");
! ~7 I& R+ k" H0 p. M8 l    createbitree(&amp;t,&amp;n);
( w/ x6 {2 m- q: H/ R    printf("\n This is TREE Struct: \n");
$ E. C, y6 F# z& E5 \4 ]; V    preordertraverse(t);- l  w7 b" N$ D) D
    countleaf(t,&amp;count);
, A- y6 z5 @4 X    printf("\n This TREE has %d leaves    ",count);( y9 t2 u7 g# r' w, I  [
    printf(",High of The TREE is: %d\n",treehigh(t));
6 X3 d4 S% t9 g* g- }}</P>
作者: zoologist    时间: 2004-10-25 10:07
连注释都没有,怎么看!
作者: xShandow    时间: 2004-11-3 13:51
<>不错啊。
, A. p; v$ M% G  d. Z; R! R' X</P>
作者: realyoyy    时间: 2004-11-7 20:20
就是阿  什么说明都没有 变量名也不标准




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