QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |正序浏览
|招呼Ta 关注Ta
#include <stdio.h>" }* M2 d( q/ q: S% G& U3 g
#include <stdlib.h>) N# K2 Y# c1 L! y
#include <malloc.h>
4 S/ o3 `: f7 E5 ?/ P
+ Q; H6 z; `' p' M' Q/ E, c( @  ?' u( w7 r
<>typedef struct bitnode
: E- R7 S9 ^& X8 m& \' R, P{) t4 e9 a! C, [- [3 n
    char data;
. K2 _3 |! m* @; Q: e0 n    struct bitnode *lchild, *rchild;5 r; D+ b6 [$ y* {2 ]* @
}bitnode, *bitree;</P>
* J, n4 U4 z( l$ x; S+ k<>void createbitree(t,n)3 C6 l4 O0 f" I# j8 Y
bitnode ** t;
  e% h" @; r1 w; ]) U8 l: mint *n;* c1 v8 n. v$ }. L6 K
{
* N+ [# c% q/ Y  j! ^; \    char x;* ^4 z% Z- f) K+ d( G, y
    bitnode *q;
: ~( E; O' B, B4 H    *n=*n+1;- H  ?& `4 U: e7 J7 p/ y6 P7 q
    printf("\n Input  %d  DATA:",*n);
# t7 o  J6 ]$ {# R    x=getchar();
7 o! w6 V8 t  U9 ]    if(x!='\n')5 R) K9 T% ^: O+ `  d8 ?
       getchar();
3 Z9 l( t6 K' i9 i7 W4 k( a3 R, a    if (x=='\n')
, I# `! D2 f/ Z0 _' N+ K       return;) A$ Q# u' e: a  R
    q=(bitnode*)malloc(sizeof(bitnode));5 [, c4 S' y  A; g5 b" u
    q-&gt;data=x;0 d  y" G/ N/ r" f
    q-&gt;lchild=NULL;" o0 }  j8 z3 k
    q-&gt;rchild=NULL;# n( M  x6 a7 ?
    *t=q;
' e. i2 N7 z! t    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);  z& y  i3 X, J. Q1 C
    createbitree(&amp;q-&gt;lchild,n);
3 b! w0 M5 Q' t" X9 ^8 H7 \' F    createbitree(&amp;q-&gt;rchild,n);
* t$ M% T7 r! H# W9 `4 N    return;* b- }  x; F' {
}</P>
' m; R: u; z3 u2 O% Q: a<>void visit(e)
2 K. }3 h' g8 b( Mbitnode *e;+ b6 L* Q0 x6 _9 o# a
{6 _* z. @% s5 m4 c
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
+ P5 }& O: X7 i9 z% c; @}</P>& |4 T# J3 z* \! m0 G  B; `
<>void preordertraverse(t)
, E8 v; a/ B2 Y" I1 H' G# `bitnode *t;+ j8 J$ `, P) x7 S7 K" q" ~
{- w+ j. j" J& J+ s6 K4 B0 p1 I
    if(t), Y( g  ?% Q* Q5 ]1 f- l
    {! S1 x% A0 i: _6 _& ~
        visit(t);
( t$ ^3 l- S& Y  r9 M" b) P; F        preordertraverse(t-&gt;lchild);( u* d+ F& t/ p! N) `( K; h6 e% W
        preordertraverse(t-&gt;rchild);
+ r4 v( t4 x6 F5 Q& n        return ;
; I9 Q6 g+ @9 H' o& ?9 ~    }
9 B6 @4 @- |% n5 M0 i    else2 U+ [  ?3 |# _' f& w) V
       return ;# c0 a% @& `# J* a5 O
}</P>
9 N/ S# ]4 [7 ]8 a4 I5 z<>void countleaf(t,c)
2 T: ^: v) \9 S% k1 I2 B" hbitnode *t;
! i, A' ^" R$ P! c" o2 E9 Sint *c;
' ^1 y8 S* P) I3 g{
1 {9 z7 i. @% P) n    if(t!=NULL)9 |. a: h3 ~. k6 J5 Z, W" J
    {
; l# w4 R5 d1 r8 b        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)* {3 n5 y/ r  v7 r: e+ {7 ^
        {
7 r1 O5 H7 ~4 z( @* z2 A            *c=*c+1;
7 w4 c6 U; A% s0 e) I        }
! a1 H7 q9 d3 G$ D6 q* P6 [) A# x        countleaf(t-&gt;lchild,c);
( r. X0 [& q* T, j: f( t! G0 \  i        countleaf(t-&gt;rchild,c);  W$ U% Y6 |( G) o8 \* `& s( G
    }. y# j- U& Y$ M3 Y5 i
    return;) W; a, ~) }7 A2 {9 @" |. b
}</P>
+ ]) J: C& i( D( }& `<>int treehigh(t)) d  \0 P# K' ~: d
bitnode *t;9 h" b: i* Y  ^6 U1 q8 V
{
. J0 a, d# C0 L- [" f& w7 D. X; @# ]    int lh,rh,h;
2 e' M6 |8 `, Z    if(t==NULL)
* R/ J8 F' [, w2 q       h=0;
4 d7 o0 N; {- }& o; Z/ G    else- _' s# [4 z( j7 ?: U" X
    {
1 t% P' J( l9 ]        lh=treehigh(t-&gt;lchild);
( c7 B4 L( E" m( f3 x# Y        rh=treehigh(t-&gt;rchild);1 w$ @+ R2 C+ y3 w
        h=(lh&gt;rh ? lh:rh)+1;
: P  x& E% O% @% a* j6 W    }* V" V  @8 |4 X5 |/ l1 B/ S9 i7 `
    return h;
* y& M' W4 `0 j' G( r% c4 y}</P>% l! h9 i+ R0 u/ D' B" ~! R
<>main()
, A& l' K- t; |* s/ D$ g2 T{
; O6 {# I& Y* u" @# R    bitnode *t; int count=0;
/ j$ x$ j) W* I: [# z    int n=0;
7 T1 b; b  \9 j2 ~; N    printf("\n Please input TREE Data:\n");
; Z( A9 u0 j  a# E$ R    createbitree(&amp;t,&amp;n);
! ]/ K" h8 j, \( |5 Y    printf("\n This is TREE Struct: \n");. L. ?, i. a' L$ A
    preordertraverse(t);# f* C- N3 q6 {( T( b8 ]
    countleaf(t,&amp;count);3 R' Z) Q% H& v0 c+ [) f8 o
    printf("\n This TREE has %d leaves    ",count);
! N' b( q/ c- ~) X    printf(",High of The TREE is: %d\n",treehigh(t));) O: r+ R! v# m* \, `9 d/ {
}</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
realyoyy        

1

主题

2

听众

38

积分

升级  34.74%

该用户从未签到

新人进步奖

回复

使用道具 举报

zoologist        

0

主题

0

听众

16

积分

升级  11.58%

该用户从未签到

新人进步奖

回复

使用道具 举报

xShandow        

43

主题

1

听众

385

积分

升级  28.33%

该用户从未签到

新人进步奖

回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

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

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

蒙公网安备 15010502000194号

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

GMT+8, 2026-6-12 11:36 , Processed in 0.722534 second(s), 75 queries .

回顶部