QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>' I; s( m* X; W3 F' |/ G: C
#include <stdlib.h>
. B5 r+ L& `! }#include <malloc.h>
. x$ w* A$ U$ \; f
$ y$ |# H0 R- V3 e8 a, Y/ w, q& Z% b" v
<>typedef struct bitnode
8 s9 ^9 C! r, H2 ]$ ?* Q0 i) x4 N{$ @4 G  o' A: f/ e% J  e" r# v
    char data;
7 |% a3 o5 c9 w6 R    struct bitnode *lchild, *rchild;8 F) O: N: K$ H' j3 o/ P3 k
}bitnode, *bitree;</P>$ C% Z6 I- R3 Y* m
<>void createbitree(t,n)
; _6 t  z7 E; p; A: r8 {bitnode ** t;
& \/ i+ [: h7 d% Bint *n;% @5 M+ `/ l3 ~
{+ c& @4 v9 a- R8 C$ F
    char x;0 U3 J7 S0 u  a# o5 L% b
    bitnode *q;) x: A1 \1 O* j/ F" |8 s7 i( K+ M
    *n=*n+1;8 d: v) c" ?6 p7 o" R* j6 U' h
    printf("\n Input  %d  DATA:",*n);
" x% \/ e" \7 T; w    x=getchar();
5 e" U5 ]7 b" d3 T! R4 I    if(x!='\n')) i% M, w  x& T% X- {
       getchar();
/ _5 @! E) J6 E4 P$ |4 f    if (x=='\n')# a8 R* E# t4 _2 }9 {
       return;
7 w* U4 A/ w: J  x2 w/ }    q=(bitnode*)malloc(sizeof(bitnode));
6 d- o2 h: U4 J0 x! B    q-&gt;data=x;& _. Y8 k. [9 P, n9 l
    q-&gt;lchild=NULL;
3 ~, k, n8 U4 L( S& r$ D    q-&gt;rchild=NULL;
+ }; n$ y7 s: w0 @    *t=q;( L7 a% F/ H5 U5 w1 w" f
    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);
, e  O2 t; |" a) ]0 W    createbitree(&amp;q-&gt;lchild,n);
7 Q2 E2 b1 m! }0 Y8 c    createbitree(&amp;q-&gt;rchild,n);
2 ^4 N& @1 U" F2 R+ k" J* `: L0 v* S    return;
' K6 Y6 F* \. e6 @7 |$ }  i}</P>
7 j3 x' x) f8 b5 \+ G9 f<>void visit(e)5 o2 C5 d! {0 d" R' W
bitnode *e;
# W  n$ v0 x6 A' ]/ Y{
1 E, H0 w5 V3 Y1 I    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
$ P1 V+ @9 f; G7 w& N) a# ~}</P>7 v8 s% _5 a7 {3 U4 n- ]* T( h
<>void preordertraverse(t)) }- D- y% s6 j1 |5 f, W4 f
bitnode *t;
1 d2 h/ r- X- d. ^{
" X6 n: w8 K1 ^/ p# U/ V    if(t)
- e& {$ g6 B, F; [    {* a$ v8 j  U& y) c' y
        visit(t);
8 a; p$ I& k3 ~* c  C( g        preordertraverse(t-&gt;lchild);
2 d0 N$ ]8 }( T: }& y/ S! G; ?2 w        preordertraverse(t-&gt;rchild);7 C# ?- ], R/ J$ w' r2 v
        return ;+ K% u9 A# _6 \" o6 V$ w7 H2 M
    }
) K; i0 d+ I2 L6 z    else3 {5 c7 N: o! o( ]; D
       return ;
- z& I8 x  P6 b: p- o}</P>
- G3 L) _$ W# W# A- n<>void countleaf(t,c)1 A5 `& q! r6 P# W5 \2 I8 v
bitnode *t;& x% a8 `0 B; c/ y$ M
int *c;9 _% _% x% x. N, G0 `# F  f
{
: o& o( m# m3 I/ C    if(t!=NULL)
3 I* M0 a( L7 w    {
7 C& L4 {0 a* V. Z2 q& P$ ~3 E) M        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
( b) j! C( n0 _$ W        {
* F; ^7 d0 ?5 @' z            *c=*c+1;  F, R" B& `, s4 a# j
        }
( x0 @$ i% S1 _% x* g        countleaf(t-&gt;lchild,c);
/ n4 M% |* z* a2 {3 |6 p7 _) G        countleaf(t-&gt;rchild,c);
+ k9 W8 f# P4 o# p0 w) }    }
' {# C5 b1 ~+ H! M, M# N    return;! {. b( A3 j# _6 j9 t2 s
}</P>- G7 G& H; r1 I
<>int treehigh(t)9 q, i9 Z4 d6 v1 a+ Z) A1 A
bitnode *t;
1 j- y9 T8 |3 Q: j( E{
/ ?) r) O) T2 f# L: h, V: q    int lh,rh,h;& i, O# u0 C* s; \# o" R
    if(t==NULL)
& o; F' [" ^% A4 M4 d5 b3 d       h=0;- H& @% N# ^2 Z9 @4 ~
    else
5 C" Y; W4 v2 r$ i4 y# i    {3 h8 f) b) \6 K$ r9 b+ [
        lh=treehigh(t-&gt;lchild);
6 ~. q) y" j' c2 w3 G, Q        rh=treehigh(t-&gt;rchild);7 [+ O5 f% W8 j. r
        h=(lh&gt;rh ? lh:rh)+1;0 S; E6 j; h! m6 [
    }9 l# [7 w1 S2 B$ ^& {, F. u0 L* j9 M
    return h;8 ?3 @3 W% z+ I) o. k! |
}</P>
) N( `1 A7 _7 N9 e1 o/ }( M<>main()
# H* \7 J; x& r3 o5 b$ [3 n{
9 ~: n7 j+ v  @6 l6 z5 j7 p    bitnode *t; int count=0;
- k0 }! c) K$ }6 S, Y9 |    int n=0;. U* ]4 ]/ A2 A+ h% {# @
    printf("\n Please input TREE Data:\n");
, b# ]  ~' p8 m  i0 a1 }; n! b    createbitree(&amp;t,&amp;n);
' V8 k2 h. ~  p! Q6 J4 C9 |    printf("\n This is TREE Struct: \n");
" W8 W0 J/ S, }3 R    preordertraverse(t);6 ^( H* ~" N. j+ @% a1 n
    countleaf(t,&amp;count);
8 T5 v# c7 u' c, l0 K0 E    printf("\n This TREE has %d leaves    ",count);4 `7 G9 e4 R. H" ]9 ^. F
    printf(",High of The TREE is: %d\n",treehigh(t));
) {2 Q! V( \& s4 j# @; U) s}</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 11:48 , Processed in 0.623665 second(s), 75 queries .

回顶部