QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>
6 g( b: r2 [1 ~$ Q' h. Y/ v  l#include <stdlib.h>" s6 F! P3 V7 l3 n2 p- V
#include <malloc.h>
' |: O: U5 P' T  I$ D# U0 x4 n3 b/ w% p  b

# m* d, }3 `) N& m( i9 Q<>typedef struct bitnode$ }: B1 p/ ~# Y, [$ D5 ~! T
{0 v2 E5 b5 P, E. s
    char data;
' I5 ]4 ^: M  K1 q    struct bitnode *lchild, *rchild;2 M. u) i* g# o: |: \
}bitnode, *bitree;</P>2 g) P8 F% [4 B0 `2 B0 A
<>void createbitree(t,n)
$ I/ [8 a. E- N5 S* W2 s: Nbitnode ** t;7 z6 z) |' T  q
int *n;
# q# {4 w4 L* F7 p' V& p/ r{
) F' \. D4 C/ f8 U3 n    char x;: ?; \2 a0 X; o. q* j& R
    bitnode *q;1 s3 C; \  h* X8 j, v) h
    *n=*n+1;" X! i/ a( k9 d
    printf("\n Input  %d  DATA:",*n);
. p1 ]; k9 ^: X2 B1 m! r    x=getchar();
. K8 p, N/ x' |2 n    if(x!='\n')
, y; ?% z+ t( u* ]       getchar();
6 J9 q3 U; K& S+ O+ I    if (x=='\n')* J% ?, m2 T1 ~& R" M$ U3 R6 c
       return;' ~1 i1 ?7 U0 l0 k2 |' X
    q=(bitnode*)malloc(sizeof(bitnode));" \. D. E+ i/ V- h2 V1 B$ u/ a
    q-&gt;data=x;9 g! d( @6 `( @8 ~1 [
    q-&gt;lchild=NULL;
. p, \8 [5 x9 r" {    q-&gt;rchild=NULL;
+ P0 G9 A, }; p' w% S& t    *t=q;5 ~# E4 C8 m9 H" }' }1 ]% W; A
    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);
2 F9 E: G& R" K    createbitree(&amp;q-&gt;lchild,n);9 m4 R1 `+ f2 K$ S- P4 p1 `: y
    createbitree(&amp;q-&gt;rchild,n);6 U4 c7 M( H4 q: w: I% Q! f9 B
    return;( ~; m3 j: E- w
}</P>6 D$ D& }4 L. v( n! D
<>void visit(e)! ?3 Y, @2 B: [. r0 y6 U
bitnode *e;5 C" v( Y  ^' X( h$ e
{7 p; `7 I! q( r! l; F! k( s
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);2 H+ P3 Z7 v" F' T" k8 B. d2 v/ @
}</P>
+ Y; W6 b; i  ?/ t<>void preordertraverse(t)
# g# T* G! n) R! H; E5 Cbitnode *t;
3 J4 ]9 `% G  T" q; t) B{% _6 @, `# o& a2 j6 A
    if(t)
! k: Q0 u% R$ Q* e  X* ~, O6 @% D! n    {
) A2 J$ Q! Z3 U( r( U        visit(t);! T5 ]) j6 u/ c5 e
        preordertraverse(t-&gt;lchild);
& x2 e+ V# ?7 K        preordertraverse(t-&gt;rchild);2 g# t- k3 s" n' ?6 p  q; \' _
        return ;
/ [3 m% ?4 b8 `0 X% F3 f    }
/ b6 R; x( b. |6 p0 f9 y. g    else
5 p8 [  ~0 ?6 ]( H7 x       return ;
/ I& U9 Z" T7 ]  L}</P>" q4 t6 F8 _  X
<>void countleaf(t,c)
1 P! ~, _2 v/ n9 B  Zbitnode *t;5 _% S( E5 o! F: ]* a4 b
int *c;7 [7 ?  F  b$ \' [; u' x
{
" ^( }7 [/ ?" L+ T' }! s/ a8 w    if(t!=NULL)
' v# n& Z, A! o$ R2 V: A' e1 R- d5 F    {- x: w6 v/ W1 u3 ?$ H
        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)# k# _. p, F6 r1 A; w
        {! f1 e: m  c$ A6 y# A% ^: I7 B
            *c=*c+1;2 m* h% O9 c+ T: n9 \* s
        }
: f* i6 s! d4 B' }) i  d9 I- g        countleaf(t-&gt;lchild,c);
! }  E5 L* Z/ m        countleaf(t-&gt;rchild,c);
: D* v$ m& P6 n) R    }
3 Z7 Z; p/ R; r. ?7 g2 j) \    return;
4 i! q2 U6 ^( T8 _5 A}</P>
2 S( _7 n. z4 Y( A<>int treehigh(t)2 w% m0 p9 n8 Y5 ^- A
bitnode *t;
$ ~- g3 m$ b. r9 o{
  j. o( H2 x+ s3 l7 h    int lh,rh,h;4 Y" e) z# @$ {
    if(t==NULL)
* a- I) O* C# M" Y' e       h=0;' [  z7 R) [9 r& j! a2 O; [
    else
: {& ~9 W, G5 `7 C2 r8 b    {9 i# o$ C. @4 X  b6 c* C8 a& J
        lh=treehigh(t-&gt;lchild);) f$ m' E# U( T1 A; {+ \
        rh=treehigh(t-&gt;rchild);
4 Q% G0 \" u# S4 C* }        h=(lh&gt;rh ? lh:rh)+1;' H  Y$ C: i; z
    }6 V' o# W4 I: F, z, Y) S
    return h;
6 @2 k' `  j" R) X: D+ t1 s' o}</P>3 T+ E4 w2 n. q0 m
<>main()
6 r/ z* u" M# r% P+ M5 u{. [; u2 V  c  F1 W6 x, E  r- X- Z
    bitnode *t; int count=0;
# L' H: |7 A" s3 h    int n=0;
% ^& f( n: d: S' ]" g7 A    printf("\n Please input TREE Data:\n");+ |! B' O8 o; K" |+ }  ~4 K
    createbitree(&amp;t,&amp;n);5 b* e8 S; x7 x4 a
    printf("\n This is TREE Struct: \n");
% T9 w0 V1 v/ p  w" y    preordertraverse(t);  L$ h3 a* `! ]1 k2 W
    countleaf(t,&amp;count);7 L) P' q$ `; R# ^. s7 I6 f. w/ ~
    printf("\n This TREE has %d leaves    ",count);- |& C8 F& A. ?" ]4 H; s2 K. J
    printf(",High of The TREE is: %d\n",treehigh(t));
4 ^  a1 ^2 \* T' t" 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 09:56 , Processed in 0.385003 second(s), 75 queries .

回顶部