QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |正序浏览
|招呼Ta 关注Ta
#include <stdio.h>
2 f$ q3 O* v2 q; X5 ]2 h#include <stdlib.h>
; E/ g1 O0 O. t( |4 E#include <malloc.h>
0 l0 t( j0 H' v+ B" c
# B: y  ?3 Z0 x4 x/ ]. q* v4 X+ S, I; I- a
<>typedef struct bitnode
2 U4 j  }  _" v6 n* Q5 A! Y2 g{) m4 F: N3 f' [% a+ P7 g, _4 b8 t% z7 `
    char data;1 `7 q5 y$ D! [/ H, M
    struct bitnode *lchild, *rchild;
+ d5 y% n# R8 A& S$ E0 j7 o& K0 S* z9 |( ]}bitnode, *bitree;</P>/ y8 w, \3 K& H! _* f
<>void createbitree(t,n)
5 k* U- |' t2 x7 tbitnode ** t;, c2 \" {2 m8 A- B4 W3 l  a
int *n;) C3 `+ t( C% `5 c( i4 C
{
3 S# H+ T, N# n    char x;; ^, R  u* G9 e/ Q2 C
    bitnode *q;  p4 [9 o+ Y3 }6 Q6 p$ c
    *n=*n+1;+ A) N: v/ `4 s4 P( u" m  d2 A, n
    printf("\n Input  %d  DATA:",*n);' L" b  S( e$ E- m9 Y# y
    x=getchar();
) ~9 W; Q$ o( K) _8 v6 g    if(x!='\n')
# V- a  }+ P! e' @  c       getchar();$ I/ h2 s7 s  F; q8 J  I3 u3 S* y
    if (x=='\n')
& ?5 k! O1 B$ c  e* c       return;
' U. M& J0 ]: g7 h, \1 o    q=(bitnode*)malloc(sizeof(bitnode));4 B  v- ?" t1 R+ Z
    q-&gt;data=x;; q  j# f' P7 ^: J9 ~$ u( v7 i
    q-&gt;lchild=NULL;2 L$ G* ?- I+ y# s
    q-&gt;rchild=NULL;
8 k2 L1 R; B( ]" W1 p% d5 q    *t=q;
3 t8 f4 }& ?9 B# K6 T6 x0 a$ 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);6 ~- t8 W0 q# N" |: \
    createbitree(&amp;q-&gt;lchild,n);
8 E0 o! l5 A" s0 J    createbitree(&amp;q-&gt;rchild,n);  C* r: I, d5 Q' n) k& g
    return;8 M# r+ f/ y* d+ Y' Z2 N( M
}</P>
4 O6 @. G4 \# R- m& h<>void visit(e)( t$ {1 ]+ X% V5 ]
bitnode *e;
) g5 }9 v% P3 i4 p6 o: O{
+ p. Q7 t" r4 @6 h0 K3 l    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);
& V; v% C5 b( z7 c}</P>+ @# @3 b/ ]- h. j1 _  W
<>void preordertraverse(t)# `9 @1 Y: B6 g2 f( |
bitnode *t;
; r. _. T: V. T1 X! T+ {, t4 V! z; {{
. g  v3 B4 Y. M! h3 }$ `7 I/ W    if(t)$ ?3 C7 \* n9 @
    {
9 X# q1 F4 j1 s7 @3 X        visit(t);
: a9 _- D2 b$ P* S: W        preordertraverse(t-&gt;lchild);& N/ S# b. N, _( L6 ~7 l
        preordertraverse(t-&gt;rchild);
1 M: D0 H$ ^, n9 n1 e0 l        return ;3 Y) k6 X( g* I8 D
    }
# ^5 I# w5 o& A- q( ^; Z    else
, c, E# \% Q; c       return ;
9 B1 t( N! D7 j4 g7 l: c}</P>
7 {9 [; M4 F2 T& q' v& o<>void countleaf(t,c)
* c& \1 \* a) J$ K4 Q8 z: Rbitnode *t;
8 `+ i/ L- N/ D# g  d1 rint *c;
' L$ \: Q, u+ e4 v+ w' \0 _- l% I{
, y$ n5 Y2 a  Q9 R    if(t!=NULL)
2 x$ r+ x- J, j, p) Q8 d3 ]    {
3 |) W4 }- j- J7 b        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)
4 A8 P! G* R3 u3 h0 ^2 s        {! X& |% |! m8 G0 Z  }$ j
            *c=*c+1;
; V- ~5 N: c6 P' P7 x7 |        }
" n) [7 P/ [* N        countleaf(t-&gt;lchild,c);
5 @2 K: v$ c% `0 P! x' p" Z        countleaf(t-&gt;rchild,c);
# p; N, C# v$ L% R% V    }
7 }' U8 s$ P3 J* g& ]    return;
- n, {* @0 Q% [7 q& l: ]$ M4 L}</P>
6 \) y+ \6 S2 @! r<>int treehigh(t)5 u+ J& {% I' W
bitnode *t;
4 ~8 s# N" }$ r{0 {( c8 i$ a: f: P$ p# L4 j! U
    int lh,rh,h;2 m( F& Q: U) L4 U- Y8 ]
    if(t==NULL)
4 G' V% t5 O/ k" {       h=0;* }! ~" f- o, y# _
    else
4 ~; i; U) M' v    {% p) |; S9 h# p+ H- A# S4 j
        lh=treehigh(t-&gt;lchild);
9 r6 b( `9 `# t) J* P$ P4 l6 N        rh=treehigh(t-&gt;rchild);
1 K% N/ R& ~% Q" Q1 A$ v9 I9 n        h=(lh&gt;rh ? lh:rh)+1;
5 e% i7 H7 T2 J    }
$ t2 I  y3 t; H0 d$ o' I    return h;
: a  I& ?) z1 Y}</P>
3 H3 p8 l( @# I. _3 E$ B: J<>main()* {6 p5 B8 J, g) {& K: \
{
8 W$ p( \: f2 s: s    bitnode *t; int count=0;# z8 l5 U: a& `$ X7 N- S
    int n=0;+ R; i3 f# e# O& `& Z$ A* }- V
    printf("\n Please input TREE Data:\n");
, w9 s6 j6 k0 u( {% b8 m# m    createbitree(&amp;t,&amp;n);
/ Q% g/ I- @: R" Z: c& e& G( K    printf("\n This is TREE Struct: \n");
/ b9 o) j) Y1 Y, D6 t    preordertraverse(t);/ v( T+ s0 }8 h) k; F. ~
    countleaf(t,&amp;count);* ?7 k( y0 r1 ^* b* p; I0 h& g
    printf("\n This TREE has %d leaves    ",count);9 M" T, a' M' i3 b$ T( U5 m2 ]
    printf(",High of The TREE is: %d\n",treehigh(t));  `( N$ x5 b3 N! e6 d$ ~' Y
}</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-10-24 10:08 , Processed in 3.478585 second(s), 75 queries .

回顶部