QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>; W/ f7 o% d, w# T) K& [/ h3 h
#include <stdlib.h>: ]# h! M: u" P6 R  a
#include <malloc.h> : h, `5 ^7 X5 q  I! M( Y; C
# I- M4 z/ g* U* L1 A2 K

( w" N: S9 i& K) V5 h<>typedef struct bitnode  b* j7 s- b$ W
{; ^: a# r$ z0 Y. W8 h
    char data;
+ J6 k' e; W, ^0 x    struct bitnode *lchild, *rchild;! c' B+ ?* B5 w9 u, E
}bitnode, *bitree;</P>9 ~+ w! `9 W8 ]  U4 d9 I. F6 N
<>void createbitree(t,n)/ r, W  b! K) b
bitnode ** t;
# D& Y2 b* u" e. ^int *n;9 X" n& x9 e8 h9 w/ o
{
  r. W- E! d" E' R( |; M    char x;  g3 ]6 U' L8 f) L! Y8 v. d& H8 g
    bitnode *q;
3 d- A: F  N, t    *n=*n+1;# b2 j. S) b  t, n
    printf("\n Input  %d  DATA:",*n);0 M4 ^5 g  q  n' K" O5 m. E% a9 |+ V/ I
    x=getchar();
) O1 q7 R% p+ t; `    if(x!='\n')
- o1 s2 o+ B3 Q8 q! p7 R5 o% Z       getchar();
7 t* t+ `6 T4 S/ P9 j8 y, V    if (x=='\n')! N: M8 W0 L5 z# H" @1 Z; W$ j( D% d
       return;
% D$ S( T! g5 }3 Z    q=(bitnode*)malloc(sizeof(bitnode));( |+ L4 k  j8 F7 d' U
    q-&gt;data=x;
$ ~# V( j/ G. T. ]6 H6 z    q-&gt;lchild=NULL;
& V5 Z/ g+ c2 {    q-&gt;rchild=NULL;' a( M" K$ R, O8 R
    *t=q;& n1 E8 n& M/ `. Y- 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 Y$ D' c( s6 k8 [2 y
    createbitree(&amp;q-&gt;lchild,n);
2 r0 a4 [' [! L' z* ?. D; H+ j    createbitree(&amp;q-&gt;rchild,n);
3 K4 C) J/ D* e8 S    return;: {3 L3 d5 v3 v
}</P>/ C- Z7 u  z$ G( A! p( }9 x- w
<>void visit(e)7 P: w) ]( _: ~. `! Z) @. C
bitnode *e;3 R4 |2 p# S- R- J6 u* E
{. U$ K/ f( D7 J$ c, w* e3 B. i' T* t
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
# p- [* k  O8 p5 T1 r}</P>$ h+ r6 L) s3 e1 Z
<>void preordertraverse(t), S' T$ E( l4 I! o
bitnode *t;# W1 ^' |6 L- {, n: T5 Z2 N2 x
{
: r3 T" t) J7 G. N: _; ?    if(t)
. S4 @! s: q. F* S, g+ @6 X, s    {
3 O( }6 w; ?  o, P2 i, N0 `        visit(t);. `: u* w& G9 v' ?3 U
        preordertraverse(t-&gt;lchild);2 M* G, z2 |6 S* S
        preordertraverse(t-&gt;rchild);) W2 q" I! W5 I4 x* v
        return ;7 i4 M& f$ z7 [4 q! ?/ b/ b
    }
- I# M* {8 j8 {' c    else1 A. H1 L, e7 Q, `
       return ;( ]: {3 p  n+ N. S+ T
}</P>: O9 J0 p' q/ i) d7 N( Y. F1 p
<>void countleaf(t,c)5 L9 _% E1 n" g1 x
bitnode *t;9 }4 S% c. e* j; X. I/ T7 U* w
int *c;% |& u( T9 ^# E  ?5 `9 H: B
{7 [1 N6 L1 r: o
    if(t!=NULL)+ r0 A$ s! }0 F) d
    {
  g+ f2 |, X: D$ Y; C        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
9 E! r6 h) _* |$ w2 V. W# |; A        {
+ y! Y; W2 o' v            *c=*c+1;
: F  a, B& u0 h4 q( M! N2 `        }
) P9 E; ^" e* {+ L+ C        countleaf(t-&gt;lchild,c);
9 v4 }6 [6 ?4 r$ i        countleaf(t-&gt;rchild,c);9 p* {# n( \* O' ^
    }( s% F  ^  t: ?2 |9 m3 K( J
    return;
1 S$ u# D5 k9 u: F2 G% @}</P>
/ j& n1 \7 A+ J<>int treehigh(t)
9 T6 ]9 Z6 F7 p! Q! I7 Kbitnode *t;
/ w* V5 L) W' j- q+ A  w{
9 K+ P- Z6 t; l# W  ]. f    int lh,rh,h;. w. Y  [2 ^2 B# _2 Y5 d. o
    if(t==NULL)3 S& x& A' f$ ]* m  f+ T
       h=0;
" l& @# o* E7 d4 d+ Q! D    else8 a; J: q4 w( b. `/ x" B8 x: z
    {9 [& J1 v7 |, ^; F! s
        lh=treehigh(t-&gt;lchild);7 y: X% F5 B! @6 {
        rh=treehigh(t-&gt;rchild);
& H( i5 r$ J1 v        h=(lh&gt;rh ? lh:rh)+1;
) i3 }5 s" a7 U" _5 M    }; C5 z8 y8 x, Y  x2 X$ P
    return h;
- e' p* g/ Q3 P. L) a# u" t8 H' ?}</P>7 E/ Z: ]: o# I; }8 H( T
<>main()
- g  r1 |2 w( z, e4 K- e4 `{% Z4 J+ r- {, e+ E+ d( R
    bitnode *t; int count=0;: w5 L& Q* X3 i5 m, T: M0 z0 j' H' }+ A
    int n=0;. B; g; ^- J5 g4 ^
    printf("\n Please input TREE Data:\n");
% }0 U+ `: @4 @2 I0 `( L. r    createbitree(&amp;t,&amp;n);$ I# y; U. b  i# v5 R) {
    printf("\n This is TREE Struct: \n");6 t4 q: R2 A" Z( A( m
    preordertraverse(t);/ o1 b! o$ ~" I+ v
    countleaf(t,&amp;count);
1 {# N% j* ~7 d5 ~1 @    printf("\n This TREE has %d leaves    ",count);# S' E, M; m0 |" N5 R0 W7 s
    printf(",High of The TREE is: %d\n",treehigh(t));
/ r9 \' d( f) f% y( X}</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-10-24 04:31 , Processed in 1.558765 second(s), 74 queries .

回顶部