QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>
4 s( \% n4 Z' C4 s9 \#include <stdlib.h># R* X/ x: h; U; p
#include <malloc.h> ; u  K7 p6 a, v9 i6 i
* @7 H/ g. c0 _% a9 ^

; u& Y& l9 A4 G; N& E<>typedef struct bitnode5 a3 f9 F2 g+ L7 U& X+ `. E
{
( Q  f8 V: }9 d1 o% F* o    char data;
$ R! }" U, e& d    struct bitnode *lchild, *rchild;1 w' X% w5 C: p) k7 u! x0 n
}bitnode, *bitree;</P>
( }, G% o8 P( ^' S<>void createbitree(t,n)& `! r& ~+ `9 W! v5 ^& P4 I: M( u% ^
bitnode ** t;. f+ S$ c3 A+ x$ [% c
int *n;
& u7 ~/ N1 ?& P6 G{
8 z- y4 ~; i& V' [, v    char x;
' y* V) H$ j+ ^( M( I3 n6 U    bitnode *q;
9 T# n' W8 Z: A    *n=*n+1;
  \7 V% p  N5 F3 w1 X" T    printf("\n Input  %d  DATA:",*n);4 A& P$ O% g9 u+ a
    x=getchar();
5 v5 y. x7 e8 ^. W+ M2 a; m+ j" m1 F    if(x!='\n')
9 L. F3 w5 _' R" g. h       getchar();
, u- U( a4 _( y, L+ p/ J6 k* N    if (x=='\n')7 ?- R* K2 g+ E: t
       return;& ]+ i! R5 t4 f: I
    q=(bitnode*)malloc(sizeof(bitnode));7 n* |3 A, H1 c& r
    q-&gt;data=x;' B  ^' y- k  p2 z. C: p
    q-&gt;lchild=NULL;; C4 J* f/ P' t% m) E
    q-&gt;rchild=NULL;* o, Z6 o* O' z+ B" W. D  l9 ]8 X
    *t=q;
( W2 W: t  D. u% B    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 O+ u  N' I: \$ }$ o7 a    createbitree(&amp;q-&gt;lchild,n);$ b! [9 Y2 r- B9 I
    createbitree(&amp;q-&gt;rchild,n);
2 _9 o9 O* L+ C9 w5 X    return;
, _  t/ Y8 n5 h" Y}</P>& w4 u+ \& P0 _3 {. o- a, Z
<>void visit(e)4 a( U% Z$ p0 v0 J+ T, I
bitnode *e;2 m% r4 ~; b. b. y4 ]* i/ P7 g
{8 v1 g4 C6 E: w) _' q
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
* a2 d, S& K9 H6 d# j2 S, N( d}</P>
# b# D9 n' i; ~: }/ o! B<>void preordertraverse(t)
0 S/ B2 I, e' Y4 E: Rbitnode *t;
( i' s5 |0 ^* j{6 T7 ?2 D$ ^5 P' Q& l
    if(t)( X0 S' @5 t, }
    {# @1 O( j& X6 R
        visit(t);
4 |* o: s2 h5 z( h7 ^& y( u* P6 b        preordertraverse(t-&gt;lchild);4 W2 {' H/ [6 z  c5 b! m# E
        preordertraverse(t-&gt;rchild);
( p3 b; H" G( m7 }        return ;4 d$ o6 }/ o4 D1 n6 t
    }
3 ^3 i  s- Z0 `4 i! ]5 i$ X    else9 T4 k$ A4 K8 H# T& z! |
       return ;
. _7 J4 e! S4 t, {/ |8 v; \}</P>4 J% j/ L, q7 {- E' _
<>void countleaf(t,c)# t: X% r7 m$ u; R* |
bitnode *t;  K) K6 x6 g6 \: l( @; B1 S
int *c;
2 j) M! t2 K4 a{% Q# F! X# ^, q! m
    if(t!=NULL)6 u  u0 v$ F& T, Z3 x
    {
- `2 e& Z4 B: j. t! ]        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)3 M' g/ a3 y: N
        {) J5 O0 j: F0 D# l
            *c=*c+1;
) V- F( U, {+ Z9 J) [$ _$ _, L        }
; H- F  e1 u; I5 S. q% Y5 n7 Q. z+ Z        countleaf(t-&gt;lchild,c);- j* G8 k! N8 z/ w( Z4 a
        countleaf(t-&gt;rchild,c);) g7 |. Z' e) C% {# G+ h8 N4 R' f- c
    }
; M1 E, c" R2 ]) v# l    return;
9 V  f% Z  ~, j  K}</P>/ p. Z: m% i7 r8 G/ j$ B
<>int treehigh(t)8 l) m) M4 b- ^7 Z+ Z
bitnode *t;* |0 k8 f7 g* g- a* A3 i
{4 T7 c$ @) m- ?8 ?& d
    int lh,rh,h;; b& r8 W2 n7 h. W2 t" W% C
    if(t==NULL)& j+ L+ Z% D# L. B6 F. `, m
       h=0;, [; C' E- C$ R/ L$ x
    else# h' L+ t8 g. k+ I' M; h
    {9 J2 q. ~8 g# e- n0 V. F+ R
        lh=treehigh(t-&gt;lchild);
9 U+ Y; M) `/ p. I4 I  X        rh=treehigh(t-&gt;rchild);' h) h% H" h: _: ^
        h=(lh&gt;rh ? lh:rh)+1;, t) ~( T; o( i+ N0 E5 K3 C% g
    }4 @2 S9 L5 ?* z8 Z: ?" d9 U' V
    return h;
: l  Y4 e8 L9 ?& {}</P>3 B% \- n, F8 E& O! w, b
<>main(): h- y) p0 |- P
{/ C) [* `+ K( l3 p* ]8 ]2 y$ r' B
    bitnode *t; int count=0;; f: n" x4 n5 {& j( W( t
    int n=0;
! Y  q$ D; P1 I; m6 ?    printf("\n Please input TREE Data:\n");
' A; e: J+ s5 R/ F( e, y" y    createbitree(&amp;t,&amp;n);
0 n! T9 `7 `# h    printf("\n This is TREE Struct: \n");1 K3 V; U4 Y6 e% j* W
    preordertraverse(t);
- s. Q2 b9 n3 X8 ]3 P    countleaf(t,&amp;count);* D1 y1 c1 t" A3 V, W% t
    printf("\n This TREE has %d leaves    ",count);. E6 L. G7 C* H
    printf(",High of The TREE is: %d\n",treehigh(t));
! J- [2 w2 ^3 ~/ p. q}</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 15:24 , Processed in 0.564611 second(s), 75 queries .

回顶部