QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |正序浏览
|招呼Ta 关注Ta
#include <stdio.h>
4 B- j5 ]& z5 x- U4 S#include <stdlib.h>
' S; k, q  x2 ~& X" U* T# Z) d#include <malloc.h> 0 I9 y8 `6 n' x5 {/ C1 A, b
. x" ^: D, {% p% V/ k: v2 b

& G6 w0 u- [& |) t: i) ?% e<>typedef struct bitnode1 ~2 q: j6 l  z. F: w
{
. N3 R! V! r. \. u& n/ G    char data;  j* n4 M3 H3 w9 l
    struct bitnode *lchild, *rchild;
3 I, E( h% d5 S- z8 r}bitnode, *bitree;</P>
4 j  |" s& U; X  x<>void createbitree(t,n)
; H" M* s) S) Y3 nbitnode ** t;
* _1 _- Q# g- J- E/ n4 gint *n;
2 Y: r) o; y; N1 s{8 F9 k- p! _+ r9 i" s
    char x;8 f; k2 t+ _9 t
    bitnode *q;
3 h. Y" M+ u, ~; ?% o  ^9 Q    *n=*n+1;! Q7 z  l0 _# f7 i
    printf("\n Input  %d  DATA:",*n);. }3 o6 j" [! H8 n; _* ]
    x=getchar();
% B8 j' v" f5 m5 B  B    if(x!='\n')
; d# ]* S& L4 P  L       getchar();% E, u, ~: }5 C8 ^. k
    if (x=='\n')( F# ]9 m4 n# R
       return;' O' b' p" q' f& b8 ^/ F* E
    q=(bitnode*)malloc(sizeof(bitnode));
& f# a( g+ g2 u0 V% Z, a: e    q-&gt;data=x;% W' t8 V+ k  V0 s
    q-&gt;lchild=NULL;
6 g2 e# {8 f  I1 r5 ~1 S* e2 ~3 b    q-&gt;rchild=NULL;2 ]7 ^7 @" K! v) U
    *t=q;- f9 ~. x$ `: n0 p" l' I, D
    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);
+ }- }  c. \( |* @5 n    createbitree(&amp;q-&gt;lchild,n);
( o5 p4 d/ K% ^5 b" Z9 l    createbitree(&amp;q-&gt;rchild,n);
5 K, x  o! ^- n" x    return;4 j; B) a) C3 X: [# _- x/ a" J* r$ R
}</P>
" ~7 m6 S7 e4 [. A+ g+ o<>void visit(e)* a5 e+ J7 w2 x  K4 l8 O
bitnode *e;3 q. R6 d4 b5 S2 w0 ?2 z
{
- R6 Z$ C7 x  d+ w1 ?, X    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
, n6 |4 Q; I  X, l$ P}</P>+ I% Q, l0 Y7 C# l- C
<>void preordertraverse(t)
* I' b# }) G7 W0 I- H2 Mbitnode *t;
. J7 e1 M* H6 `2 @4 N5 d5 z3 t$ \{$ `2 ^7 ~# G1 m/ V/ o1 _
    if(t)0 z: X; Z$ B- ^7 K7 B( d! K: P) _
    {
3 N5 W6 y0 A' c9 a4 _        visit(t);
: Q, A2 A  E1 q. v        preordertraverse(t-&gt;lchild);
, n$ q5 {: P" k0 }" w. ?6 M        preordertraverse(t-&gt;rchild);
' m* ?8 m/ M8 b9 b. _& W1 b        return ;
% l( v/ R8 i% G. R  u, ^5 F    }
* Z- i8 E# b3 I    else
0 ?% ?8 Q% F: K, S. |/ U. Z       return ;
- A$ j7 i  E8 r3 w( x' B! H, ^1 e! X}</P>
' @, z6 `! B  @% W' s" H; Z<>void countleaf(t,c)
4 `2 P  c5 R3 x1 ^* w6 @bitnode *t;& R- I& O# _; X0 n: o
int *c;! I  Q+ V2 c: I0 |. y
{# n, y' f- F/ y) x& S5 f
    if(t!=NULL)3 X+ t! ~" s% ?9 t) C% A: \3 g
    {% K& @6 S7 i; z
        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)7 N: T# X( O$ x
        {$ o3 i; r$ z9 g# O8 B- S
            *c=*c+1;3 T0 U2 Z- X9 ~1 Z: Q: T
        }
  y" D) n% t# u/ Q7 }        countleaf(t-&gt;lchild,c);7 i3 b! ]3 z$ F
        countleaf(t-&gt;rchild,c);
8 R3 S* z- x; D) u4 E# n3 g    }8 c& }0 A7 H( Q4 W# i9 P
    return;$ o9 w% R% {3 _
}</P>9 X" U% z3 g& N! f' S, o0 a/ e
<>int treehigh(t); Q& p* S+ E5 w3 g$ ?2 x# f* j: ?
bitnode *t;9 ^+ p( M4 Z9 |5 f- s. p
{  f" l2 h) U0 I2 }+ V2 }. x& o) T
    int lh,rh,h;" w9 D9 a9 R- b7 f+ D& J# f6 b- N( K
    if(t==NULL)
: y' [2 G  j9 R; _, ^       h=0;
9 u  L" g( I/ A- F9 C$ w    else% o2 V/ g5 B/ S! L" p( e# Y; S
    {, }5 p& k7 V* F/ X, D) L
        lh=treehigh(t-&gt;lchild);2 F1 V3 a. D& U# X7 v/ E
        rh=treehigh(t-&gt;rchild);
9 U* {: q, q$ R5 R# p7 ~6 ~0 R- J2 D        h=(lh&gt;rh ? lh:rh)+1;/ Q# p1 s" W! B* e) l7 H- C
    }
3 ~* e, R9 b2 M' W' O8 O. M    return h;
+ G  V& n: x2 ~  u}</P>
. V: k9 p. Z$ `5 e- v<>main()# w  x5 I( R+ a1 ^
{2 h/ }6 ^- k: Z5 C& R
    bitnode *t; int count=0;
. @& G9 \, L  ~  j9 k! {1 f    int n=0;
/ N9 g) r6 O) U- {# ^0 G- X+ D    printf("\n Please input TREE Data:\n");
' j4 r( W0 {, ^1 ]+ r0 G; e5 o    createbitree(&amp;t,&amp;n);
3 I. w5 S3 l4 r/ o, a2 |3 w% w    printf("\n This is TREE Struct: \n");- {& ?0 `! G# Y8 _  Z8 C
    preordertraverse(t);8 u& }2 p) {" A
    countleaf(t,&amp;count);4 `& |# I. a& R) D' j0 m, R; T
    printf("\n This TREE has %d leaves    ",count);
6 t+ t" f$ k4 O& c( O) ]* C    printf(",High of The TREE is: %d\n",treehigh(t));
5 c* j" d6 P' ^: |$ V}</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
realyoyy        

1

主题

2

听众

38

积分

升级  34.74%

该用户从未签到

新人进步奖

回复

使用道具 举报

zoologist        

0

主题

0

听众

16

积分

升级  11.58%

该用户从未签到

新人进步奖

回复

使用道具 举报

xShandow        

43

主题

1

听众

385

积分

升级  28.33%

该用户从未签到

新人进步奖

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-20 15:13 , Processed in 0.492245 second(s), 76 queries .

回顶部