QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>! o' M" O7 j# T' Y9 u% Y/ i
#include <stdlib.h>
8 P1 I9 j' K* E( Y& l5 v#include <malloc.h> - G/ Q1 y# H0 e- h- e8 J
5 T9 S/ _$ O: l) a  d; A6 I. o, J8 x0 s

" d$ ~/ W" v0 n& j% @; r8 l<>typedef struct bitnode
! ^. Y1 s9 o: S1 B3 {{' J0 D) t, D  K1 f
    char data;4 E! Y2 C# i% _
    struct bitnode *lchild, *rchild;8 H7 ^1 k- t) T+ n% S/ p) A* \. X) r2 |5 \
}bitnode, *bitree;</P>1 L6 |0 p+ i4 S+ z
<>void createbitree(t,n)/ {0 m5 T! H. q9 y
bitnode ** t;! B1 `$ R, g# m; e& {  l' I: e. z
int *n;( N: E4 u0 r7 T& ?! v" Y
{
) @6 {- ^% |0 e% o, _) b. s5 ]    char x;
4 Q% Z( O% e9 [    bitnode *q;
' J( E4 j0 w. b' W    *n=*n+1;+ s+ h4 V3 j- L6 M: ]6 r- f
    printf("\n Input  %d  DATA:",*n);4 B4 i7 R5 |: D7 J5 f
    x=getchar();0 J2 U4 r% {- u0 d0 C8 |$ p
    if(x!='\n')
- ~' d; k0 Z7 ]* b& D       getchar();
/ M* Q% F; ]* W4 A4 Z- ]' j% a    if (x=='\n')6 ?: g3 @' f2 Q2 N- }7 Z
       return;, D$ x  m$ t7 G, m5 K1 O
    q=(bitnode*)malloc(sizeof(bitnode));) @6 v$ Y; Q) \
    q-&gt;data=x;
, Y) u/ a% O$ F, H: D    q-&gt;lchild=NULL;$ i6 t4 B$ [2 B/ h
    q-&gt;rchild=NULL;0 g& `- q+ ?& F9 \
    *t=q;# w. x! w% s  b& ~" O! g
    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);
6 U: n; i# `7 |( h- ]2 R9 e; E    createbitree(&amp;q-&gt;lchild,n);
; y* J. Y' @4 w5 W, z, ]    createbitree(&amp;q-&gt;rchild,n);
/ K0 j* v# N/ N2 Y: V( t) T    return;! }' w  R2 \4 Y  S# g4 q
}</P>6 X1 a/ A, b$ U' t6 d
<>void visit(e)2 |9 Z% {& J: H2 F' \
bitnode *e;
! \9 m) S. I4 p- z; F# Y{9 l8 C, _3 t% c, ~1 d
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
. a- U+ g$ k$ V/ Q* ?}</P>
7 L1 O+ j: U0 s' R2 Z+ @! V<>void preordertraverse(t)
: r8 V& u' }5 x/ kbitnode *t;
9 Y) P1 O, n0 {, G. C3 o{
+ j( V3 x6 |! R( {) F6 d  s    if(t)# p  o$ E7 l$ D" k4 e9 }
    {0 v9 X; g. |3 e6 W2 q  C, J
        visit(t);
9 Q0 z0 {. u4 Z0 S  v" a        preordertraverse(t-&gt;lchild);7 Y. o4 l& m* i  ^; ^; |: w( j
        preordertraverse(t-&gt;rchild);+ u+ L& r0 t* ~# B: L; j
        return ;' O4 ^5 B/ l3 h5 Y
    }3 p- F& S9 f. u$ q
    else
2 B  H, j2 ~* N2 W* M       return ;
) S; N$ e3 l" R: N4 _) Y9 X}</P>
, E! t; f5 |, ~8 P6 s<>void countleaf(t,c)4 T% x# c- u9 N3 q
bitnode *t;3 Z+ v( D6 {) P: t7 Q' O3 d
int *c;" q5 W; X3 J  R# `
{
0 v5 O9 i+ m$ t; h6 m    if(t!=NULL)
  P7 U6 i; R  A5 _/ D7 \    {
9 B1 l% \0 e& i        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)1 i" t0 a5 L( ^8 i. Q& A
        {
& n2 J- d, m( p1 A0 O* ?7 r            *c=*c+1;2 ^% D7 G" [  ]! Q7 n1 J
        }6 `! @6 l3 n: r3 ]
        countleaf(t-&gt;lchild,c);
5 D7 |1 B' P0 _* _) v9 f" v( S* V        countleaf(t-&gt;rchild,c);  x  s4 A/ c9 m% X, \0 X0 K1 x
    }
% f. }) B# i  `. {    return;: j' F3 L, ^# k" D
}</P>7 N/ e! i1 M, x* R! {
<>int treehigh(t)
! i$ k4 Q6 ~$ q( B9 q: t$ z: cbitnode *t;: E" ?# ^$ \1 d9 g6 u
{
- ~1 X: m& J1 _- w  i, h# ]    int lh,rh,h;
' z. h/ ~: b- E    if(t==NULL)
2 {3 d$ [8 e! z# [/ F4 S0 }       h=0;! D/ M3 z; U4 O0 E1 J4 E! P
    else
: ~! i7 r! `2 g6 n: P: D& T. @    {
' F# A$ G, f' ~9 g3 x        lh=treehigh(t-&gt;lchild);8 H' v) r% ~2 o4 d' f& Z( Q
        rh=treehigh(t-&gt;rchild);  _% S/ |* F0 B5 g7 I
        h=(lh&gt;rh ? lh:rh)+1;
/ B, X! a- f/ A" p    }
" r- [5 s) ?3 r, _8 ?; b    return h;$ D4 f/ d9 y% H8 g0 U6 c
}</P>. R( U7 F1 H2 u1 ~7 }9 {
<>main()
  I$ J- v- l, x8 L{
' \7 c6 |( F8 y    bitnode *t; int count=0;
* @2 a. d- u% S    int n=0;6 G! b# ^. j; Z& V4 r
    printf("\n Please input TREE Data:\n");
% F6 ~( Z. v5 U$ t( d    createbitree(&amp;t,&amp;n);
3 v  ?) ?3 X3 J7 {0 r    printf("\n This is TREE Struct: \n");0 [& u* {4 k7 Q3 z6 K7 G
    preordertraverse(t);
/ t$ [) B7 Y% Q1 y    countleaf(t,&amp;count);4 b# ]5 k+ v1 j
    printf("\n This TREE has %d leaves    ",count);& B# \( }+ n1 Q& l
    printf(",High of The TREE is: %d\n",treehigh(t));
, M! b  Q# o) r$ ?) \}</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-4-20 06:22 , Processed in 0.582455 second(s), 75 queries .

回顶部