QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>& ]4 U" g9 Z( w; R
#include <stdlib.h>
3 \2 A$ `" ^4 z. A#include <malloc.h>
' j4 x) \: m2 P) Y9 J" Y8 h" F* R7 Q; S' i
2 Q) _0 U) P! d& {% X# f
<>typedef struct bitnode
; j2 s* T' H* _2 L" E0 j{# f3 [: P7 ]4 R
    char data;3 N7 J9 p0 a7 H( C8 `: l4 ^
    struct bitnode *lchild, *rchild;
# s( o  A" y, v7 h- ?}bitnode, *bitree;</P>& i8 H/ b+ Q' I. }
<>void createbitree(t,n)4 p0 W. B0 f  g& J# A1 |* W8 r  G
bitnode ** t;
& u8 f+ k) Q6 B$ dint *n;" ~! `/ n" t$ {5 V2 j
{, M# R0 X: l5 \* ^
    char x;
* ~( G9 c$ t; ]# u; u& w    bitnode *q;
! e, H: S5 A5 |/ K    *n=*n+1;
# F. h1 [5 Z1 [    printf("\n Input  %d  DATA:",*n);
& V, `- C: x4 b+ M8 I    x=getchar();# W- q" K4 ]: [, I
    if(x!='\n')
" e! N2 R+ r9 N  [       getchar();
8 _/ D0 s! g! ^2 \1 @    if (x=='\n')
* D: r- }  b+ S( @' R       return;
# A5 H. O) i0 }; w$ q6 [    q=(bitnode*)malloc(sizeof(bitnode));
: V$ n! w  Z% X! L( [7 Q$ n2 @    q-&gt;data=x;
% o( Q  ^1 {4 i0 I  R    q-&gt;lchild=NULL;
: @" R  x& B+ O7 [2 b. A4 a& E    q-&gt;rchild=NULL;
4 B: m$ P+ c5 I$ G9 ~    *t=q;
1 O2 N. X$ j! E2 p: E) V; ]6 Y    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);
4 y9 b3 u! ?3 a0 B    createbitree(&amp;q-&gt;lchild,n);
) Y5 P% U0 p8 z  z2 \$ n/ a    createbitree(&amp;q-&gt;rchild,n);1 ?) b1 y: L: k7 X- j
    return;" \. i; L5 G1 ^% t3 Z( C
}</P>$ a- o! z: Q- r3 g, v5 t& U$ C4 l5 `
<>void visit(e); j6 P" p) |+ \( k- o8 C
bitnode *e;8 e) n- Q  O# c' Z* @/ b- w0 |
{
/ Q. R& c; u; k/ n. P    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
3 G9 F" T5 X; d- t: p5 z. S' b& ^}</P>5 O5 p5 g+ D. \' i0 ?
<>void preordertraverse(t)$ T7 D. h/ a. \/ a+ r1 j
bitnode *t;. E3 a4 {; G0 I3 n7 }
{/ C) F/ D. M( [. [4 V
    if(t)
2 w0 S  D3 I) C$ U. B    {9 X" c% A/ l6 T: Q* x) {: j3 d. I
        visit(t);2 q: Z# `% v2 U8 r0 S7 X
        preordertraverse(t-&gt;lchild);) i( ^& m, J6 f: f
        preordertraverse(t-&gt;rchild);
8 ]" K9 I" I7 x: m3 c        return ;
" z9 R: ?# ]) A( {    }
5 A% M8 ?+ V% K6 X' I    else
% K2 F7 |; v/ o# t, x5 f       return ;
, h4 f% v, s. {}</P>
$ g* ?* x) [3 u<>void countleaf(t,c)3 R$ _1 a! T' o+ B
bitnode *t;) n) H: w; I% l
int *c;  K2 z; \! X' g/ F5 R8 ~
{
5 l* T5 O: K* w6 ]    if(t!=NULL): b0 ]$ s8 `  L) x! T/ E# U, @
    {% I7 S# n3 v4 I4 e
        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
& M$ _7 e5 D& K" v$ @9 Q7 q0 q        {
) U. ~; m1 d# X; y  h2 V" _            *c=*c+1;2 S9 ^: Z* Y0 f3 v8 A' K: p
        }! R7 z% P- b/ n- g: M$ ^
        countleaf(t-&gt;lchild,c);9 r* l1 F# |- H% b% g1 N
        countleaf(t-&gt;rchild,c);
/ I/ t8 `; P# `1 k- B' j    }1 ]7 W; p- h" Q! b' A/ x
    return;
) [7 o7 C5 n, q( [}</P>" v( T% U# \% ]  z( U
<>int treehigh(t)% H) I4 s! `% m5 z- |& {0 G
bitnode *t;9 E0 }8 c. [& _% }  y' n
{
! L7 ]$ d1 T0 J: E    int lh,rh,h;
. `5 i& P: Y' u! \" V2 V    if(t==NULL)  }  @9 k( c7 R/ l5 V
       h=0;
! _+ X: @. D1 T8 {. R    else
: n% c9 g* \" C1 j    {' e" m/ V. Y$ r, p. F- H5 e
        lh=treehigh(t-&gt;lchild);+ R" I5 t# @- p# R
        rh=treehigh(t-&gt;rchild);
3 h8 s8 x1 Y3 d. H7 Q3 z        h=(lh&gt;rh ? lh:rh)+1;
2 j. b% N% Z8 F% q, }& l    }& K9 p" z" ?# z* ~5 q/ W1 h8 D
    return h;( e! b! _- g3 B+ d* x  F# B- j( b$ I0 ~  u
}</P>
0 k2 y7 o8 U0 V) _& P$ f8 N<>main(); g; E# s. X. @! W
{
5 {% r+ B! u. D* {' Y2 f2 C: x7 K    bitnode *t; int count=0;
7 J9 T4 I  K! O* a# u7 i    int n=0;
1 l- ^1 G$ u# G) H    printf("\n Please input TREE Data:\n");& ~. G; N4 B  o  M
    createbitree(&amp;t,&amp;n);
  u" x: S4 b, Z0 {3 t- }. A7 F3 L% b    printf("\n This is TREE Struct: \n");
/ x, B) ~' ^+ D6 ~+ k    preordertraverse(t);
% C! P# l0 K/ `9 A0 ~. P, h) ^    countleaf(t,&amp;count);( Z) a& p+ k& y$ ^- |
    printf("\n This TREE has %d leaves    ",count);+ {8 a& t) q" d. X( q. t5 q8 K
    printf(",High of The TREE is: %d\n",treehigh(t));! t; J- F: L- I
}</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-6-12 16:07 , Processed in 0.426058 second(s), 75 queries .

回顶部