QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>" x$ T" `* D% i) d! g4 D" G* ]
#include <stdlib.h>
8 o4 p3 t/ O( k. _#include <malloc.h> 7 u( I# p/ V2 M% q/ u6 D5 r

, l5 T* N/ }; P$ q8 {0 ]) N
3 g; G  ?& `' J! o3 a<>typedef struct bitnode, k# c/ d* k5 y- z) R
{/ {. J& e  P# A& X9 G
    char data;# V" W. r$ p1 V) R; v9 n/ \# f
    struct bitnode *lchild, *rchild;
; j9 }/ o9 b6 R4 l. U* i}bitnode, *bitree;</P>" p9 z! P- v( H1 J1 X8 _5 o5 K
<>void createbitree(t,n)
8 R" z4 T/ E& s- k/ Z# h& \bitnode ** t;
+ ]- b0 Z! l' F  Bint *n;
. X) P* @# W3 h3 C{
2 }2 P# c7 j( q( `! D) t5 f* j    char x;
' n6 D6 a0 L% ?    bitnode *q;
7 q+ G* M( u  V4 t( {# B' w    *n=*n+1;$ q0 i0 L' w# F- B
    printf("\n Input  %d  DATA:",*n);
1 G8 _/ O, X* n" m$ j1 p# `; N2 S, O    x=getchar();
+ J* `" F7 T5 l+ S& [* [- J  j    if(x!='\n')# r% d+ _0 g3 v* t% r: f
       getchar();
4 \. H. o( I; F6 o  y* M( Y    if (x=='\n')
5 e! r' C5 ~2 d* d       return;! G3 g1 ?  x) G* \' H2 o) K
    q=(bitnode*)malloc(sizeof(bitnode));
$ c4 M6 r0 J6 c% E# i6 e- l$ G    q-&gt;data=x;% O5 L" R( J2 p) A2 `
    q-&gt;lchild=NULL;  v  z# d% k4 x& x! Y9 x: B" U
    q-&gt;rchild=NULL;
$ }6 `# R* |6 v3 n+ a    *t=q;
$ F- Z. Z  d( ]" i5 H    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);
! Q7 y2 f1 u; A- k    createbitree(&amp;q-&gt;lchild,n);
; [2 A8 S/ i" `/ @    createbitree(&amp;q-&gt;rchild,n);
6 a1 X- o: x, P1 H& L: V    return;" \+ i- _5 l" \6 ^) L- N  k
}</P>
8 {' ~+ T% v3 {( e; S5 x9 j<>void visit(e)
7 L* R4 j6 O. f+ t; S. V: }& ibitnode *e;5 t& V' M' P: n8 t/ u9 [
{) u1 ?* I0 [4 ^$ X
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);0 j1 \8 R' e4 N4 P" I
}</P>9 b. P; U3 t  ^: |& n3 H" Q5 W
<>void preordertraverse(t)
7 a- g$ \* ?1 s# K6 @; r$ u# ]8 abitnode *t;: m1 E) V: F7 s5 z8 s  r: C
{
) \# r" E; B# M0 n0 t$ w    if(t)9 _" M, z9 E1 v3 x0 {/ K
    {
9 u; A# K4 e. m9 I* A- `        visit(t);
! ?* @7 }' m7 M4 S8 |0 T' ^1 }        preordertraverse(t-&gt;lchild);* t9 v' H1 M! V. w) d& P
        preordertraverse(t-&gt;rchild);
4 {$ Z9 e2 Z9 _. d. j        return ;* O7 [4 `7 E; k# q) l& d% @
    }
1 v) l  [3 A! N) Z* M  u    else
3 n$ f! S; H) m; U  F# G) H! p) Q; O       return ;! R/ d8 C* o/ \
}</P>5 o2 h: {; P/ X, L$ j
<>void countleaf(t,c)
! r) j% q; g# k* g* ?7 abitnode *t;: g2 J) j3 }2 p
int *c;. x# }2 e% D( B2 I  H* S' v2 d
{
' F+ f) n$ U" n    if(t!=NULL)
2 G7 m0 S9 A! w  v% w    {
6 f8 p& g9 x9 g6 t        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
  \. k" M4 f; t7 z' B# F. `        {8 |( [5 k. V. x6 k
            *c=*c+1;
5 q% }! M+ \; C% ~        }( y! [" P/ Y; B, h& c. C# T
        countleaf(t-&gt;lchild,c);5 T3 g0 H- A. o
        countleaf(t-&gt;rchild,c);
# |4 U* a" Q& S: J2 N7 v    }8 P7 z5 M, y# M! t4 B% \' H1 x
    return;; U+ E; }3 Z! r6 }
}</P>
! W% o" f3 i' r1 }<>int treehigh(t)
8 I2 J' O3 }- A1 i% T- {bitnode *t;4 C) L$ E# Q  j) Q
{' [  W5 h8 `- M" C# `7 r9 u% c% G
    int lh,rh,h;/ Q% t5 x9 {" t3 c' S# S# N9 M
    if(t==NULL)( \0 O4 q" H. P2 }6 X: h! H( A
       h=0;
# n$ L8 a# `/ w& N1 O! {  F    else
% ^/ P' r) H& x$ u9 ?$ e    {
0 Y8 B) C5 |5 u$ d' b1 k6 T        lh=treehigh(t-&gt;lchild);' H1 Y9 i9 `& k7 g0 v
        rh=treehigh(t-&gt;rchild);
% y0 K$ ~( W9 g        h=(lh&gt;rh ? lh:rh)+1;3 y) K- X* H. c* m
    }' c7 E# J! R  Z; y! H
    return h;% H4 L. r; Z2 d. x4 p2 l: F
}</P>2 j7 A* r! u* H8 Q) J! O7 M1 M
<>main(). @  p$ c7 K# t& u' H
{: z7 t3 l: s# w4 q! f
    bitnode *t; int count=0;
$ [' N" e  S+ v    int n=0;( S" K/ G8 `( }2 p! D+ S( A
    printf("\n Please input TREE Data:\n");3 n3 D& q9 s0 J/ K: ]5 r" l
    createbitree(&amp;t,&amp;n);9 N, w8 X" T; N3 }; Z
    printf("\n This is TREE Struct: \n");
: w# ^1 q9 ^+ Q3 u/ N+ V' L    preordertraverse(t);
% X& G7 L& f6 }3 q, v9 Y4 `1 F    countleaf(t,&amp;count);2 V1 _+ [7 n! [
    printf("\n This TREE has %d leaves    ",count);
9 ^- X) Q- o$ s& S& R    printf(",High of The TREE is: %d\n",treehigh(t));% b# [% h$ }+ X# m: x
}</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 18:09 , Processed in 0.440147 second(s), 75 queries .

回顶部