QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>
# t' U9 W. E0 X0 h; o$ P#include <stdlib.h># a& ~$ v) q9 K, W/ C/ u6 I) ?9 J
#include <malloc.h> 1 Z) @& p! f( e, r$ `
, b" Y9 e( ?+ H+ ]" x% X
4 P- `  K& y5 s
<>typedef struct bitnode
& B* v+ y' ]9 x9 u3 n! [# b{
# A- {& ]+ @. K: V9 j( Z    char data;# L6 l% r/ Y1 d  l
    struct bitnode *lchild, *rchild;3 X- r( `. I7 q9 c
}bitnode, *bitree;</P>
& ~; E) a1 k' @4 |9 Q4 O' k& a<>void createbitree(t,n)
( A0 v2 g, a5 I6 Fbitnode ** t;( e6 ~" Q# U3 K8 Z3 Q- |
int *n;% h* s5 l- A  i( T0 x! }
{
: H5 a1 w9 H4 F) C( c$ h% G    char x;
2 V9 y& w! J! T) M+ Y; P    bitnode *q;& L+ z' r, C! Z7 T& A. C" S
    *n=*n+1;
. U3 s9 ~3 V. \    printf("\n Input  %d  DATA:",*n);! I6 R/ z' Z( k2 M/ |& Q. m7 b
    x=getchar();, |" R1 a  E. r
    if(x!='\n')
* {# e. H! N- T% @6 F  J4 }8 z       getchar();
" e' P- ~& J' l) }    if (x=='\n'), J+ y5 e: s: B, d) S
       return;1 Y1 E  n; }! z' `' q- G. G1 n, N
    q=(bitnode*)malloc(sizeof(bitnode));( m, u$ z; g1 c4 @) e0 N* H
    q-&gt;data=x;
, U# \( {9 R3 g- k- I' P; i    q-&gt;lchild=NULL;' @( U' A( f: v
    q-&gt;rchild=NULL;
& z5 o3 N; h9 i5 Q- ^& I    *t=q;; l# u, |* c! S* ~
    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);
* _9 t2 _) V, Y% }    createbitree(&amp;q-&gt;lchild,n);
/ @$ E+ y: R. q' p: h5 y    createbitree(&amp;q-&gt;rchild,n);
  E" O+ M# U  L5 a( q0 l    return;
! d3 k& e+ Y8 u" a}</P>
+ s* O1 F- ]) m2 ]/ w6 s& @$ O<>void visit(e)6 U( n7 h% e. a' B
bitnode *e;
  C/ F/ u* x0 I9 f4 M: e{4 T) V3 S/ u1 R; Z8 \
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
6 w1 h% j) R2 ^6 Q}</P>2 I! [1 P, k5 l. F2 E
<>void preordertraverse(t)( `- a" D0 l4 z* b. S. c
bitnode *t;, h, E8 x; i  \" f) J
{/ z1 p) q  N, O9 x
    if(t)3 M4 H! _! V- M
    {( {* K4 V0 \4 f- F9 {
        visit(t);
* y" t& A9 {0 u% L+ W( [& J2 _7 m9 i        preordertraverse(t-&gt;lchild);, N* |& K% v& M$ x( g% k/ K
        preordertraverse(t-&gt;rchild);) j7 i' \" S. U! T
        return ;( t+ @4 G( `, d7 c( x$ g
    }
# J: D; R( L: ^    else
, `5 j2 y' A: G. v: m       return ;# Z) E8 e" ~* K0 c9 k9 M' o
}</P>
3 S* {5 G+ H2 e<>void countleaf(t,c)$ d) `, R, |3 P" e
bitnode *t;
# l) @: d7 @# M! j- r5 Xint *c;$ q" [% I: }1 J
{
+ O8 S8 I; L7 p+ o  n2 T9 Z" v: G% j    if(t!=NULL)
3 d0 g: V  o  f& _9 f9 ~5 b    {% d1 ~# `  _" Y
        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
" m) t. \# y  j. a( K/ z" s, Y8 H        {
, N. _' [, c* b' ^            *c=*c+1;$ c* H* v( D! s1 K  \
        }
# q, f( ^& j+ _6 k& q6 `        countleaf(t-&gt;lchild,c);$ a" K9 m5 g8 Q
        countleaf(t-&gt;rchild,c);. ^( J7 B% z9 ~3 u
    }
9 k, z: @( d9 g# F" O    return;- `- ?! F+ \- V" w4 i, C$ Y3 C4 m
}</P>$ `5 V( k/ R4 E: S
<>int treehigh(t)+ Z0 [: v: v* }  s; @  b$ j
bitnode *t;
) Z0 C* Q) a6 d, e{* ^* N4 A  h# L+ g
    int lh,rh,h;' T/ M1 C3 c- E  T' J% c  r# b
    if(t==NULL)
2 {0 r, s+ ?- @2 V' i0 q- M1 C       h=0;
  P2 P) D) c) W+ O( y% I4 U7 r5 o    else2 l  O( s9 }- A
    {. W" k3 \" @' N- M
        lh=treehigh(t-&gt;lchild);4 x7 `: }# G( o, P* N
        rh=treehigh(t-&gt;rchild);
/ |! l% s" s$ ^6 G        h=(lh&gt;rh ? lh:rh)+1;
& \) A8 f6 C9 x% j$ W" V+ N    }
# J  g( R- |$ u4 O( o3 y+ u    return h;1 E& B; R; ~/ j& h6 m1 J8 A% I
}</P># U5 O8 M+ f4 y1 D2 ?3 N4 G* @
<>main()
2 o2 g) o4 h+ r7 `$ C8 ?{9 T( O/ [( f/ L- d
    bitnode *t; int count=0;
4 ]7 Z3 o' e' F/ V4 o    int n=0;
% P( f3 v# s$ i7 Y    printf("\n Please input TREE Data:\n");
+ [/ Y! |- z2 \2 z* A    createbitree(&amp;t,&amp;n);6 ^; j# i! H7 M2 t9 V, F
    printf("\n This is TREE Struct: \n");
  U: X3 N- |1 J1 q- W( o    preordertraverse(t);
2 w% U% |! d4 l- Y: D' V$ _; o% e" g    countleaf(t,&amp;count);
) L2 a& p& L2 \: c0 |    printf("\n This TREE has %d leaves    ",count);; L6 \0 ~, V( b+ i
    printf(",High of The TREE is: %d\n",treehigh(t));
5 h" Z% y% I4 A9 ]}</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-6-11 20:25 , Processed in 0.341137 second(s), 74 queries .

回顶部