QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>" a) w# K9 }& K9 o
#include <stdlib.h>
: X, ~4 W) o) m" X% F0 G#include <malloc.h>
2 M3 T! N8 l7 p4 ?. x3 s/ c2 i' W9 W: v

5 S* |! `: J, E* w' M3 s<>typedef struct bitnode
& Q: J- l* P2 r5 ]# d7 k{
* a" A- ~9 g' k3 {: j4 K" Z& f    char data;" W  Q  e% O! \" O! e
    struct bitnode *lchild, *rchild;
& c9 U- Y1 b, |0 P/ T}bitnode, *bitree;</P>
! a  A) J; A# @- J1 d+ I. v5 [<>void createbitree(t,n)* X) M5 |- _+ ?( H  S8 Y7 V
bitnode ** t;* _4 |# P, d1 M$ l/ |
int *n;" [+ S$ @6 G  \# A( Z
{
) u' `$ n1 h( m: C* R- ^" I    char x;# a0 `5 U+ {2 {2 n
    bitnode *q;
- P! `& ~  H1 L! }! c! c9 P+ [6 p, v8 c    *n=*n+1;
/ n( L  q: r' x1 C    printf("\n Input  %d  DATA:",*n);
  d$ @  g# C) f( z    x=getchar();
+ V" y8 G* p) Y) Y3 p9 _3 F    if(x!='\n')% |% |! w8 f+ j1 B# F; f
       getchar();
( W2 Q* B2 E2 i9 [3 Z. }- I2 @    if (x=='\n')6 |  }: a/ ]( w
       return;
! x3 P7 ^6 `1 k    q=(bitnode*)malloc(sizeof(bitnode));& V  W* S# U' S9 Z( e
    q-&gt;data=x;' A# b4 j/ }. V' Q1 b( n0 m4 d
    q-&gt;lchild=NULL;
0 @* P6 A( B5 l2 W# O    q-&gt;rchild=NULL;
8 z& Q; m. v: W) J# b/ n    *t=q;# i- `) D# O! ?8 Y) i0 ~, r% U3 _
    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);) t8 }% @2 m9 E1 X" A) y3 N
    createbitree(&amp;q-&gt;lchild,n);
8 j- N$ q. f5 ?9 r! B    createbitree(&amp;q-&gt;rchild,n);
* T/ |9 \& V; e! g( B    return;$ d- f# [. Y3 h
}</P>8 P; {7 b) a* W6 p/ C/ F1 I1 A9 k
<>void visit(e)
2 `6 I$ m- Q3 ~$ C# B9 Wbitnode *e;) L' p1 `* P6 L, h& Z
{4 Y' S9 N, S! c9 }+ u
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);  O2 i+ \2 `8 C% e( f
}</P>
  B  m+ U3 |7 ~4 ]<>void preordertraverse(t)) S) O" D3 {% F& B) I
bitnode *t;
) L" p+ m2 x2 {: A! x+ s{  [' E5 E  A& }+ \. x3 Z
    if(t)
) ?- a( L! z9 q; J( V! C    {
3 ]( j8 J. C: w! D* ~5 y" B; @        visit(t);" p3 ~! Y% `0 h  b. b& N
        preordertraverse(t-&gt;lchild);. J# O9 [) c! ?0 S
        preordertraverse(t-&gt;rchild);
7 z) h& V4 t. c4 r$ K8 R        return ;
1 c+ M$ L, f1 Q: T3 s    }: h% A6 j/ d9 ^  h
    else
- m0 z6 S" K& i/ Z* s       return ;! T3 N, \% g, u0 J" _7 {* e
}</P>' |" W' D' m. E4 B4 P8 Q
<>void countleaf(t,c)
/ A5 [6 Q! b- Z2 t) _9 f  pbitnode *t;6 a5 \7 A. Z* C8 e" n, {
int *c;3 E1 ], k: E/ `4 O
{
, ^% b3 a, K5 i* X# n0 F    if(t!=NULL)5 ~5 Y/ ]: {1 t7 U
    {
# e$ _$ E8 j* w$ g! V2 z/ L        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)# k! e  q) y2 a& ]' S! D
        {% H5 P8 P. G2 y# k: T- L9 J
            *c=*c+1;
- \: d* C3 h& B1 `: i% Y. y* J1 c        }1 x8 Y6 I5 \9 E, z- v$ j/ z; D, R
        countleaf(t-&gt;lchild,c);  c  G: z" a+ |3 c
        countleaf(t-&gt;rchild,c);" Z& }4 [# k* j& s; o9 T
    }, z  I$ ]8 T5 T) K4 j: B
    return;0 e) ?5 C6 ?! o
}</P>- V# `5 A9 a; v( l$ f
<>int treehigh(t)
  Y: I1 T9 w3 x) K# Cbitnode *t;
; i  E( f6 t; y{
: M: D, M7 N" l" @; V& V# v    int lh,rh,h;
. B$ u/ t3 {) E( W2 x    if(t==NULL)7 z: i! g4 |6 L, \
       h=0;
9 i; C# H: ^. _" W" n6 V    else9 l! Q3 ~7 r" U- J' ^4 e$ h, V
    {
8 e' W2 n2 X; ]( p        lh=treehigh(t-&gt;lchild);- u& G, P( d1 `5 q6 R
        rh=treehigh(t-&gt;rchild);
$ Q; o+ ^8 q" @  f) n        h=(lh&gt;rh ? lh:rh)+1;
& B& e! n) j4 L4 J8 @    }
4 d1 B( t% T9 n+ O! j* k6 y    return h;4 ?$ g3 o, ]6 l# s& G9 v; m% B. `9 ^
}</P>
; N8 [* p3 [9 Z2 ^4 g<>main()  w/ x( C; R( j& z
{3 Z: ~3 M0 |. y
    bitnode *t; int count=0;/ b) E0 p; s; E; e/ V
    int n=0;
. o0 K2 V7 g. u, h0 D9 S" E    printf("\n Please input TREE Data:\n");# C% y% ?4 J; c  {
    createbitree(&amp;t,&amp;n);
5 x3 H5 i5 G8 \3 i# P8 ]. e& G0 Z    printf("\n This is TREE Struct: \n");
; H' M, L$ |, n" @' J% s    preordertraverse(t);7 J( o8 g9 w! F$ n5 y* o7 O
    countleaf(t,&amp;count);
. k* Z* s" I' s  Z. L- d" P* c    printf("\n This TREE has %d leaves    ",count);" \( Z( w/ v. v
    printf(",High of The TREE is: %d\n",treehigh(t));* H' `# n' n0 c9 l2 @1 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-10-24 11:07 , Processed in 0.881140 second(s), 74 queries .

回顶部