QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2506|回复: 3
打印 上一主题 下一主题

一颗很值得玩味的二叉树

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>+ }, ~* w3 \7 O
#include <stdlib.h>+ P( L& p  B* q" F: }
#include <malloc.h>
  t2 L( u' l0 R3 A6 P2 _7 S
& K4 q8 Y8 @, H# k
/ A  d/ _5 T9 Z1 v. V: m$ ?<>typedef struct bitnode5 `. ?0 s( ?# J/ v" i, _
{
9 x$ p4 y1 V/ C, j$ v    char data;
2 z, g; e0 I( r3 ~& G% U1 ^    struct bitnode *lchild, *rchild;
8 o: b3 Q9 s  t8 k}bitnode, *bitree;</P>
3 S  Z8 t, e+ T# X7 M<>void createbitree(t,n)
5 r* m' J' F9 e/ R$ G, }9 t6 r0 Vbitnode ** t;) _2 @; F! U6 P9 O. [  j1 k
int *n;
0 O& g$ d# g$ a& _  m3 e: z{
% V* s2 S+ n( I0 f; b8 ?    char x;
+ p: X2 T1 ~; a. I. g0 k    bitnode *q;
% H! ^6 e( e/ u/ C    *n=*n+1;
; Q! I/ i7 _, ]7 [0 N. ?    printf("\n Input  %d  DATA:",*n);
  O+ v% |# Z, o5 Z" z  h    x=getchar();/ X: y- \+ H. L: o
    if(x!='\n')! y2 h7 [% ]( U8 f
       getchar();
4 _1 d+ g+ @) i2 O* }    if (x=='\n')
4 P( E# h- m2 U# V       return;
# @0 |8 V9 _! w4 q$ S    q=(bitnode*)malloc(sizeof(bitnode));
  Q3 n' b( s3 A' L    q-&gt;data=x;
2 l4 U2 f0 z/ i9 N- r6 H/ _    q-&gt;lchild=NULL;
/ w; c$ @0 y% P# J5 P    q-&gt;rchild=NULL;& N1 b# v! C" u8 u( I2 h
    *t=q;
$ }) V2 c+ r* |    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);$ |8 k7 c  `$ a8 L* c% h6 Y
    createbitree(&amp;q-&gt;lchild,n);4 [" p6 e8 Z; v; p/ M
    createbitree(&amp;q-&gt;rchild,n);& U- B/ n$ `, ]0 c. c
    return;# ?- W# t+ T; ]7 p0 [  h
}</P>8 L. c) z$ G9 N6 P7 q0 b
<>void visit(e)6 a0 @. T0 n' ?( G: z
bitnode *e;8 p" j% N& ^5 Y
{
: _9 u; j& `1 w8 R    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);# u  l* m2 N& k3 A7 S* v! K4 A
}</P>. Q/ _: `3 }. M$ ^3 u
<>void preordertraverse(t)
% P, }' z9 |. e  ~9 X& Mbitnode *t;
1 v0 m" V$ ]3 U4 R9 Y& [" u. e{
9 N' D) w/ j, k/ J5 V/ q    if(t)
# W- J4 l7 ~# F, D3 f" [! L    {3 ~  @6 i# c0 ~3 Z
        visit(t);
3 n7 k4 t( ^' g4 A1 l5 D        preordertraverse(t-&gt;lchild);  y2 g8 f" _+ ^5 p
        preordertraverse(t-&gt;rchild);
8 x. b- @/ U- ~; N2 Q        return ;
1 {; l0 a, C% [" j; U/ Z    }
! |. u. I- q+ w$ {9 Z    else  b; i! P; q! y  K5 f) {
       return ;
* h9 u, i- a& p}</P>
% [0 Q7 J& C" ^* u6 p; Z; x; E<>void countleaf(t,c)/ Y7 x0 g, i: w+ ~+ w
bitnode *t;
; T5 O+ M  x% N4 s6 kint *c;; `# j" b- j( `$ [) N" B& D2 F" s
{
2 k7 m* a& v$ B3 d    if(t!=NULL)
- h3 \' K6 C% x, B) J9 _6 k; \5 v2 F% i    {( l; Y. I: z# O& f
        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)6 i/ }1 W0 g* k8 r6 K
        {- z9 H) \0 }  Y; O  _( a
            *c=*c+1;1 w4 ]& p3 P& M
        }
5 m) s& i+ H% O" o! O+ k$ T        countleaf(t-&gt;lchild,c);; I/ u$ y5 v+ e' c1 b" n
        countleaf(t-&gt;rchild,c);, t- u! w& h0 g
    }. ~9 \" ~9 L% \* U- U
    return;
! b8 w3 d4 F' A2 W}</P>9 J% a3 s/ W+ w6 F2 v6 V7 @
<>int treehigh(t)
, E% J* m& `7 n5 S5 a( G% S8 L5 k* }" Ybitnode *t;
0 X- S' _9 @+ x4 j& p{7 S" r' ]; Y# m7 o' H
    int lh,rh,h;
* X: o5 R# X3 ~% u' a    if(t==NULL)) g/ j- p& h* h; \" ~3 G9 n7 k4 `  `
       h=0;
  O2 l1 Z! E" z5 H    else! h# f; C7 h5 g1 s  r2 e7 a; N7 X) ?
    {* i$ [1 Q& w) o+ N) ?
        lh=treehigh(t-&gt;lchild);
3 d0 o' Z4 s! l9 ^# {! |        rh=treehigh(t-&gt;rchild);5 w0 E6 @0 G' v9 z
        h=(lh&gt;rh ? lh:rh)+1;
5 @5 j5 C4 ]# X5 \" E    }
9 x, n6 v  x: m& }: T: b' m    return h;# _: q" B/ L9 @( K. v3 x2 o
}</P>
/ A/ c, V, x$ a3 ?<>main()6 @; `6 ]# m% o4 {
{
4 G8 n% L5 `& [7 q5 m- R    bitnode *t; int count=0;' r6 j7 h: t5 u) q4 `, J
    int n=0;
* S! M' I1 F$ Z: }) Y  y    printf("\n Please input TREE Data:\n");
  m  w* L* z5 @% }: p  p% f    createbitree(&amp;t,&amp;n);; A$ A0 l5 p6 V9 |
    printf("\n This is TREE Struct: \n");
4 H; l$ |! Y6 H4 ^6 {, n6 x    preordertraverse(t);0 G6 z& S* `! @# V8 N6 c9 F5 ]' C
    countleaf(t,&amp;count);* g/ Y% @1 v) U- w( O: R. X
    printf("\n This TREE has %d leaves    ",count);/ J8 _3 q+ ^/ ?; p8 A1 K7 v$ F
    printf(",High of The TREE is: %d\n",treehigh(t));3 P4 y* B. A3 d8 k
}</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
xShandow        

43

主题

1

听众

385

积分

升级  28.33%

该用户从未签到

国际赛参赛者

新人进步奖

回复

使用道具 举报

zoologist        

0

主题

0

听众

16

积分

升级  11.58%

该用户从未签到

新人进步奖

回复

使用道具 举报

realyoyy        

1

主题

2

听众

38

积分

升级  34.74%

该用户从未签到

新人进步奖

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-7-21 02:48 , Processed in 0.339079 second(s), 75 queries .

回顶部