QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>; [) ]; u3 G: f* n. g, V2 M
#include <stdlib.h>
; `0 l! k5 v+ g- [1 E- Z* R0 f#include <malloc.h>
' M& n" I$ |3 c* q8 A% G: R' f" Z
2 I  e  _. Y" `0 s% X: l# ]
' N) m/ t$ D5 S6 h' J- ?. z  X- T% U<>typedef struct bitnode: \$ {/ C, `% Y- T4 A
{/ _: }: F6 s  a& ]+ a9 Z
    char data;* K8 I$ u9 }, U2 t# a
    struct bitnode *lchild, *rchild;
* c% |% y% Y( i" D! F}bitnode, *bitree;</P>
6 i" p5 ]2 M+ A" \<>void createbitree(t,n)/ a* \$ C. g% e9 K5 X' ^- L- ~  l5 q
bitnode ** t;& Q, w, T" ]# c0 ]9 y! n& m% K
int *n;9 C; H* s1 R% r9 ]' p7 G% G# v- z- ~
{4 a. Q- P6 \6 U3 u4 e% {! O; Z
    char x;% S6 {- Q+ p/ e/ I$ }- ?4 h* l
    bitnode *q;
7 |& |! t' f  w8 F    *n=*n+1;/ V6 \) v7 \6 v) q' s3 Z5 P0 \- z
    printf("\n Input  %d  DATA:",*n);
% R9 q/ m# V+ H- Q    x=getchar();. X( E; j; t9 G6 E* E9 B8 d3 H
    if(x!='\n')  K) G5 a8 }/ u! V0 I6 @1 N
       getchar();
1 i7 ^$ s' j) e% D9 m8 y# F8 M    if (x=='\n')
$ ]' ?/ |2 j+ d, q/ f       return;
  Z$ ]! n' }3 w; a+ }    q=(bitnode*)malloc(sizeof(bitnode));
4 r* }* J6 t! q" j    q-&gt;data=x;
4 X7 T, P; F- s% P    q-&gt;lchild=NULL;0 y" D0 ]! V) j+ v- ^7 ^; M
    q-&gt;rchild=NULL;6 P! J7 L+ h( R" G
    *t=q;
7 a" s# l# P- j. U+ J' G    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);. @7 v# x9 O8 b5 t3 S) v
    createbitree(&amp;q-&gt;lchild,n);
4 V4 @; k5 w1 f1 Y! p% v    createbitree(&amp;q-&gt;rchild,n);
; @  ?* H5 N6 g2 X    return;
  ]) F. Z7 f( E) \/ X}</P>  G. t+ g: k' p! o8 s
<>void visit(e)# T! s) U2 ~, i
bitnode *e;( {5 Z8 Q+ M8 C8 Q0 Z9 H
{
* F( v3 X$ o, V7 w    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
. H3 E/ y* i& I: _}</P>
: @! S6 {% S9 `) {: L<>void preordertraverse(t)* i3 G- K( i% N  o4 Y# w+ W  b1 \
bitnode *t;( @- o9 _5 G5 c8 u- A8 ^" e7 Q" r
{
$ D" t* C9 k3 L$ v8 a) R7 S: K    if(t)( j5 Q. X9 W3 z/ A: i- N; G0 {( q& ?
    {
1 n3 G/ [, J2 ?9 K- K5 Q, j- r$ P        visit(t);1 g1 u$ c' a: k. t- g! J
        preordertraverse(t-&gt;lchild);
. @& K9 u$ F$ }; P- ^9 e% k        preordertraverse(t-&gt;rchild);! v% f+ T7 w' M2 r4 w* O$ @
        return ;0 o2 v: _; [# T1 g& o4 _* O" _
    }
; X. f* i$ J; j' l    else
) V6 A: z3 `( D" f8 v: q       return ;
' b1 a; ?" F* T2 R$ k) Q}</P>; q' u+ D/ T0 R+ k% e+ W
<>void countleaf(t,c)
6 U# W6 D" N1 i5 H! e. I, z; sbitnode *t;( d& s" ^9 [( v& N+ ]$ t
int *c;: e+ Q- ^' i. x6 Q
{
  ~4 t- n( \# Q- R3 [3 G    if(t!=NULL)
1 z9 }  ^( _( u3 b7 \: Y1 u    {
, t7 z% B- R" d2 y, \/ b! |0 i; J        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)! W  R) Y, y% Y! J4 Y1 I" @) S
        {
8 ~4 h" B( o4 ^1 P5 j: M6 q            *c=*c+1;
+ S* P! }; D! _" N9 u3 a5 b. t- H        }) Q8 b$ o: R5 ]9 {( D2 h9 @
        countleaf(t-&gt;lchild,c);
5 R6 _9 x1 ~6 \+ {$ T9 t        countleaf(t-&gt;rchild,c);
, ~  C$ [# L+ g    }0 R( s; x. G! `
    return;' e5 f) A+ L, _: X2 T$ y, t7 d& u
}</P>% v* K. c  A. R% u" O( s0 Y# Y6 M7 J' v
<>int treehigh(t)
% C8 Q8 z- X& |, P# \bitnode *t;( X; X* L9 u4 \9 ]# z0 p
{' `- o& r$ y& }' f3 ?: c9 x8 V$ M. w
    int lh,rh,h;
5 I+ \( K& z/ U) p0 c  \* b    if(t==NULL)4 g. T! r( X* V% g# H) |
       h=0;
1 x- F( I9 V2 w% s# K- _    else
2 m1 W" d8 \9 N6 O    {
1 L4 C4 j8 f" e% R( d        lh=treehigh(t-&gt;lchild);
, e: @8 y% a; z        rh=treehigh(t-&gt;rchild);9 b" E  N# m5 o; X) z+ }7 d
        h=(lh&gt;rh ? lh:rh)+1;/ x8 p1 z- F$ S4 r2 [% H; `
    }4 `4 o; N7 M  _2 u6 f9 |0 ~. E
    return h;
8 h) a( l- d+ C) a* u( L}</P>6 [  y( L  N+ I  a& ^! [+ g7 h! E
<>main()
' ]0 K2 q& i+ W3 l) s{
0 s: j9 F' B, v7 J0 X8 R4 v1 m' R    bitnode *t; int count=0;  e/ j8 J! B3 I) L
    int n=0;& c: E5 Q* e) R! Z% c
    printf("\n Please input TREE Data:\n");8 I4 x# `3 d, Z* C& S9 z* b7 q
    createbitree(&amp;t,&amp;n);) B: _/ v+ Y: Q, i8 h: u
    printf("\n This is TREE Struct: \n");$ X. V% H/ u+ i" o, M
    preordertraverse(t);
* u; x/ ?! H9 i6 D% z. d    countleaf(t,&amp;count);) Y8 p2 R" z$ b) n3 Z  L
    printf("\n This TREE has %d leaves    ",count);# _" H4 v! x# F$ O0 [! ~4 ]
    printf(",High of The TREE is: %d\n",treehigh(t));0 H# \$ d$ A7 l/ y4 x5 }
}</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 06:15 , Processed in 0.323019 second(s), 75 queries .

回顶部