QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>
1 `1 s  W$ L0 s( a( q1 W+ h( Y#include <stdlib.h>
! q8 ]- q. F1 W6 E#include <malloc.h>
& Z% t6 d& k# ^5 n# K
& Z4 _) o# m! x8 c, Z, ?
* K8 z2 T  d# l" q( D4 K<>typedef struct bitnode( ^' r7 I( i" g
{# k/ f; u* G; R5 \0 Q7 Y# B: b
    char data;8 g# R" ?! r3 c* v
    struct bitnode *lchild, *rchild;
* M, t1 F, J8 g6 e( i% f* ]}bitnode, *bitree;</P>6 {, p2 M% C2 a8 S) b
<>void createbitree(t,n)
: D1 Q7 z& Y% l+ Zbitnode ** t;: M: b/ ]# k6 F8 Q$ q% S4 u
int *n;
: z7 G  `( F+ E0 h# ?  d{7 ]- A3 c6 l5 K2 I
    char x;
0 v! h6 Z: A: Y  ^9 v    bitnode *q;/ l) X& c# o/ F& D+ @# W+ m
    *n=*n+1;
$ [/ a3 b( e+ p4 \1 l) _    printf("\n Input  %d  DATA:",*n);
2 P# H( p/ R! O3 @6 n  z    x=getchar();( K! H' l; W# C) p7 ^/ }% w
    if(x!='\n')) T4 J- y$ ^' `# }3 H/ \+ t- n
       getchar();6 G- _! f* J) L
    if (x=='\n')
7 @! h1 U" e2 k. B       return;
* S" p& d# H; B- t. u$ M    q=(bitnode*)malloc(sizeof(bitnode));5 n, z9 m+ k! J, i
    q-&gt;data=x;
/ S( c) |* M& J# D. X4 i    q-&gt;lchild=NULL;! @5 K1 V2 m. H7 _/ Y
    q-&gt;rchild=NULL;" C5 h/ r) u' r, T# ^! b
    *t=q;
6 H$ J+ K  x$ q- 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);* J! Z8 D8 P7 b8 ~8 T6 C+ B6 `8 D6 g; Q
    createbitree(&amp;q-&gt;lchild,n);/ X; e0 d* H7 d9 p; i9 }6 N
    createbitree(&amp;q-&gt;rchild,n);
5 r7 c1 U7 F3 f) v5 O4 v  c$ L    return;+ X( O2 q0 D( k. ^' f. F  P
}</P>2 T, e( U4 ~5 r* p( [1 s
<>void visit(e)
0 I# f' e! j' `4 ibitnode *e;
7 r9 \* c8 A; |{
3 e! v7 G- [7 D. P" e& ]5 x    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
5 o7 O. [0 |6 H9 t; v2 _  L}</P>
. Y$ L+ p# G. v/ B. K<>void preordertraverse(t)$ H6 V) ^5 j) Q+ I  Y
bitnode *t;. _# `  k: E: P$ a
{
6 y3 ~- J2 U. R+ m  R0 n, u( N2 ]7 T# m    if(t), L) V  i$ ]- l) ^6 g1 b
    {* U) ]' x- N+ J0 S
        visit(t);
( L9 j  b* `* y3 z        preordertraverse(t-&gt;lchild);
( [' `' r& T) w# Z5 P  l        preordertraverse(t-&gt;rchild);: k' a- u( h. [5 v9 \
        return ;6 V; i8 [8 n7 P  {
    }) {& ~$ I$ d& z: m8 r2 y
    else  j: A# J* Z+ u$ Y/ U
       return ;
" g8 k# Q) L( D}</P>
6 k% O' l2 N6 L" Q$ n* g9 |<>void countleaf(t,c)$ x4 k7 h% i) U% {2 v9 O% X0 c
bitnode *t;( E- Q8 l3 G; W( A
int *c;0 A8 @! i& ^& i# C& p
{5 j& L5 {$ a1 h% |+ a' {4 W
    if(t!=NULL)
/ r. M$ B) j$ U) ^4 h; w/ I    {
4 M$ S: {# m+ B7 [0 T9 g8 l! t        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
1 x4 p( A: H1 G2 t# ?; D5 D        {' b. x: G& O' t/ r* N
            *c=*c+1;7 }, C) v. L% G: }" H& |8 H; Q
        }0 I" \/ C' v# j% `$ s
        countleaf(t-&gt;lchild,c);7 [4 r0 G( Z% b) Y& w
        countleaf(t-&gt;rchild,c);
6 Z3 W% t5 A. L0 I$ U. }    }: z- I& k, I0 r% B8 F
    return;
. W& W+ p& b8 ]+ h}</P>
% L$ b9 V0 S4 a2 M  t% W* h<>int treehigh(t)6 f. X: o1 p; w2 ^, a# `  P7 p
bitnode *t;1 p( H: P2 k5 p7 L6 B7 C! Z
{
! C* [  Y7 z/ D  R    int lh,rh,h;
: h0 d+ @, g, Z. \) X    if(t==NULL)
. Y& }# S3 P+ Q; P# u8 ?       h=0;
: @8 B& |5 ?6 ^! {' y1 s    else
( R& `4 ]. e' Y  f1 H2 f* R% U    {
  [! Y3 J9 k$ ^6 Q        lh=treehigh(t-&gt;lchild);
& Y- a' X1 J5 E  L$ `* o' g  S        rh=treehigh(t-&gt;rchild);
5 C$ M# V& _" i! X1 y0 f9 g  m; q2 n        h=(lh&gt;rh ? lh:rh)+1;4 }" z: K, e, P9 E* L0 Y
    }9 \/ F! k% q' X" r; j
    return h;
: ?1 o5 Y" n" W* k( i5 E; T}</P>
4 |# R! }5 f) V' X<>main()
# L& x. E4 g8 c( {" _( u{
/ k0 i, i# ^  c* r0 u    bitnode *t; int count=0;$ j5 p$ q) j/ v! A5 ]
    int n=0;
  y+ `  l: S! Q" X    printf("\n Please input TREE Data:\n");# B/ I$ t: v6 p9 A
    createbitree(&amp;t,&amp;n);0 \! q& `8 `% Z! @0 i
    printf("\n This is TREE Struct: \n");
: j0 ?5 @4 h: B9 d  I# P* G5 [& `    preordertraverse(t);" u) x0 |' Z/ u- I. O6 f8 y
    countleaf(t,&amp;count);3 R  h/ r7 v. n* S
    printf("\n This TREE has %d leaves    ",count);
! W1 C0 w3 s; j3 n, D& v, m    printf(",High of The TREE is: %d\n",treehigh(t));
8 Z3 R1 l4 e3 I- O$ l: T1 l$ @. ^1 J}</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-7-21 05:12 , Processed in 0.529717 second(s), 74 queries .

回顶部