QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>
  F& h# d1 t& W5 F#include <stdlib.h>3 G+ K+ y+ c3 ^
#include <malloc.h>
6 D, I6 K" |1 @. O# r* ^& t1 D" O% j7 x& x" Y

6 c& B4 O$ t( t) ~2 @+ Z7 E, ?+ ~<>typedef struct bitnode
0 D. T: Z( k2 q: p/ w$ f/ c& S{
) v$ ^7 ~0 p. n    char data;
7 T- E2 |. o) ]    struct bitnode *lchild, *rchild;5 o; k$ ]1 f  m
}bitnode, *bitree;</P>3 b" D, J* I  R/ U4 t
<>void createbitree(t,n)
2 R* X- }! C# p: L1 g' y( I4 i' P" `bitnode ** t;1 K0 r- \& f9 y7 s
int *n;9 }& g$ g* d9 i  b
{
& c; S. x+ ]. J) N1 {9 E  ^/ m& a    char x;) ?& O9 t, V5 @- _1 l. L
    bitnode *q;
/ F! w  j8 N$ Y+ Y) T    *n=*n+1;; i$ C1 {: ]1 ^, e
    printf("\n Input  %d  DATA:",*n);6 Y1 ~: K3 D. V$ d0 A9 R
    x=getchar();
6 U5 b6 q# N5 T8 v    if(x!='\n')
* z6 ]4 U6 v5 M# M       getchar();
. f- }9 X- k  V0 |6 M    if (x=='\n')
- K  V* P9 |1 `       return;
0 Q; K) I8 K5 V0 V    q=(bitnode*)malloc(sizeof(bitnode));
7 z. T2 M* A/ K* O1 o. J5 Y5 U    q-&gt;data=x;
8 ?! M$ x& \7 g( y; p" N( [& Q    q-&gt;lchild=NULL;- C+ n0 ~, E; _8 `( V) H7 Y
    q-&gt;rchild=NULL;
& Q, j* `, Y# O$ E" E. d- W    *t=q;
6 R/ U' A5 s: B% J5 A    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);! x* W* W# Z' u
    createbitree(&amp;q-&gt;lchild,n);
- S, A- m" _; H! @2 r9 x    createbitree(&amp;q-&gt;rchild,n);
. O7 `  {8 b7 D) Y% y5 T3 x    return;
  `* d! _  x: K6 k, w, T}</P>
5 Z0 Y1 q# ]+ h' W5 r8 @+ ]3 Z<>void visit(e)2 K  j2 `' V: a% ~
bitnode *e;1 a2 g0 a8 t8 y9 m3 ^8 a3 U
{( N: X4 l5 F2 [
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
. W! @3 s0 k1 M}</P>
6 A( J- b: l* s3 k  S<>void preordertraverse(t), [( R! w* W: @
bitnode *t;
: {* L% W  `5 i& o{
9 P# r, Y, a" S& m0 g, l    if(t)1 R+ a5 N8 ]$ Z/ h" e1 T" m
    {
0 c. L4 Y) n) Z3 Y4 @0 T        visit(t);
9 l- ~# e& F7 E  b: ^" m        preordertraverse(t-&gt;lchild);
9 P3 N. t' i% m6 {8 O- _        preordertraverse(t-&gt;rchild);1 Q  c" s- C4 [1 ~* ~5 H7 ]
        return ;
5 z  g" J, J( P* B    }
  d5 x# ]' P0 `: m    else  y" H) j# `1 @0 ^2 t+ K4 f
       return ;7 o4 M2 \3 k5 D
}</P>
. `. s  c0 i. A' f<>void countleaf(t,c)
3 N4 W. m0 g6 C- ?( r7 J: `bitnode *t;
- N- F9 I  A0 ~int *c;. r! g  A* H. Y- X
{$ x+ B/ ~8 _7 p, s8 q
    if(t!=NULL)$ x( M/ u% d( H6 H5 u% s
    {
, [- b- z) {" i' M        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
) ^. V% W, O2 S% o, U0 w: w: t        {5 {/ w) G. H1 B7 p: k; Z2 J
            *c=*c+1;1 l8 U% L$ _* p$ U# q
        }
0 K$ r+ n8 x/ J5 l/ ~) D2 H        countleaf(t-&gt;lchild,c);
+ d1 T5 {4 |) c: ^' _7 ]- ]        countleaf(t-&gt;rchild,c);2 p: D% Y4 l3 V1 @
    }
+ f2 `" Q- R1 a' [    return;8 y% G7 ~( [; Y. b
}</P>2 Z( b3 q+ p4 A4 P# v6 [' [
<>int treehigh(t)5 q. I5 _& M- Q2 l* O
bitnode *t;
- k% ~7 T# `/ s" y. g  I$ Y' ~  v{
7 V# k1 `/ Q- l3 J  m7 |% J    int lh,rh,h;; g3 [  r' {, L3 n2 j* B, A' @
    if(t==NULL)0 l# H' M: o& ~5 L
       h=0;
$ d2 E0 Z( J+ D- S+ m" d    else
' P2 n! a$ D, c, _; F4 e+ P    {
, C5 v. v. d; }) F5 E        lh=treehigh(t-&gt;lchild);1 ?8 j* X5 g; x4 B3 F0 ~
        rh=treehigh(t-&gt;rchild);
' M' ]+ d' [- j        h=(lh&gt;rh ? lh:rh)+1;
* A! A4 _8 J9 l0 x6 h, I4 w' k    }9 O& E& j& |3 e1 @6 b0 A
    return h;6 t, F$ V! @# J( n/ Z( d7 x$ N* y
}</P>$ Y& F- v5 u/ N5 K9 c5 M
<>main()
6 B0 U) X$ [$ z/ d' l{
2 [8 g4 }5 Q0 ?0 K$ B% J4 g( X/ U    bitnode *t; int count=0;3 Z. p- Y& x- v3 n8 k" O
    int n=0;/ A: J  i# b8 _, b- x+ y
    printf("\n Please input TREE Data:\n");* v9 n" s% C( C/ G) t. L4 T
    createbitree(&amp;t,&amp;n);/ s& ^1 Z4 h7 u# ~4 w0 k
    printf("\n This is TREE Struct: \n");( d0 h$ c5 U2 a" y% I% J# g
    preordertraverse(t);/ _1 N$ e) i4 P  e$ @9 i, Y- s4 T
    countleaf(t,&amp;count);; V8 M3 b& b3 {! k/ Q8 b
    printf("\n This TREE has %d leaves    ",count);" ?& e  J7 o. l- D
    printf(",High of The TREE is: %d\n",treehigh(t));
9 F3 L% R. Z) O2 i5 T}</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-13 04:06 , Processed in 0.479373 second(s), 74 queries .

回顶部