QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>( C; b3 R* l; Q' S3 O! O3 r
#include <stdlib.h>
& M4 s$ U8 ]8 ~: M! K#include <malloc.h>
5 _5 E" U- ?8 w
3 t& D4 U! A; ^# `$ o, x' ~+ N' n3 @7 N9 ^9 h3 P2 A
<>typedef struct bitnode* c$ F, a& ?9 F; A0 W/ q" E
{% y) U& ]" c' `& q5 L; W% m
    char data;
( k; d' U; }) O% j7 y    struct bitnode *lchild, *rchild;
; \" p$ r/ D. k) t) X- _1 \}bitnode, *bitree;</P>
6 O$ L$ b& p7 r3 ]" g% h<>void createbitree(t,n)
8 v% \! d9 h- `bitnode ** t;7 h6 T* g1 J4 e' o* _  J
int *n;
9 g( I' W2 h! x! D$ Q/ L1 V9 k{
( k3 [! P, O# a$ t2 L    char x;
0 Y4 |1 ?* @# Q! Z    bitnode *q;( T* ]* T, |9 h- I9 ^4 t: p
    *n=*n+1;  J; @- d" H  p6 N7 I
    printf("\n Input  %d  DATA:",*n);1 b- d  o4 i0 K4 o( O) B
    x=getchar();. \+ \) K* D8 B6 F1 J! V4 d* _
    if(x!='\n')" [. v% y7 B# f  b) b  P
       getchar();8 B5 ]# K5 q/ m+ k- C& d/ E  ]
    if (x=='\n')" t( q% [; j* L( Q
       return;+ t" b; c" N0 M  \8 ~# o5 o7 Q
    q=(bitnode*)malloc(sizeof(bitnode));2 ^, W$ H+ ]/ g" a# g0 k2 @' H" `
    q-&gt;data=x;
; E' K  ?+ z1 Z1 z/ `4 p& P* I( Q    q-&gt;lchild=NULL;* e, f3 j9 U8 U" n3 l
    q-&gt;rchild=NULL;# y, _) P* k6 b
    *t=q;" a. k/ W5 x+ J( x  q9 d, ^) J
    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);9 k0 n8 c1 z4 K# X
    createbitree(&amp;q-&gt;lchild,n);
6 }* \! W( J6 ]& L! P  V/ X0 d0 {! I    createbitree(&amp;q-&gt;rchild,n);  D' a* A7 e: s8 D- B. s, I# n
    return;/ G4 Z6 B6 T; ?) @8 q
}</P>
2 z/ [& F* U2 q+ z& K; D. f<>void visit(e): y/ x* X! o. {3 @
bitnode *e;. E/ c+ R- A. P& r5 ]
{# T/ P; L1 O  A$ T- t) b( w* E/ _  ^( b
    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);- E0 z1 K5 `- n9 v( c6 d4 v5 {
}</P>
. s' o# F7 |$ m! z9 K, ~2 ?4 O<>void preordertraverse(t), C' s- k5 L. E/ N, w
bitnode *t;8 u8 {% l5 A0 j2 A5 q6 @
{! u1 f7 d. g" S: a+ y. E
    if(t)
! T# c& f' T' O7 S* B4 f; P    {
; h) x# n6 K2 q2 j( N% _        visit(t);
9 l8 F$ T4 |: [9 S6 K. O; G( B        preordertraverse(t-&gt;lchild);2 `% z, q- `- i+ N+ Q- Q
        preordertraverse(t-&gt;rchild);) J) {% g8 J- }( p  c
        return ;
6 Q/ G9 u' P1 y& n    }
) j4 M9 n1 q: n+ ?    else- G- r/ x6 D1 ^7 c( o$ }7 g5 H
       return ;
5 \0 [/ z& A" C! d0 x& Z6 ]' K}</P>1 U, P4 J# b# t3 t6 N- i: N- |+ \
<>void countleaf(t,c)5 J- R0 L. T4 m4 i
bitnode *t;: K& }  K) K+ e; D1 ^
int *c;
. O6 ]7 Q% K" f. R1 O! ]# Z{
1 t! \- x7 d1 M2 p* u4 P- ~    if(t!=NULL)7 T& [" ?2 G# e1 E! ~
    {
' C9 X) R9 _$ A" {; k6 E        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL)* T# u, }# Y, a8 a
        {
. a  L" F+ g! ^            *c=*c+1;# V# Y2 I7 N, s
        }
: Z$ r% u+ ~5 l. @        countleaf(t-&gt;lchild,c);
+ k, N. H8 K' _. l        countleaf(t-&gt;rchild,c);9 Y0 `$ [7 m3 }) ]
    }0 {$ h$ S0 o4 a0 a0 d/ y* V
    return;
! E8 Y* u$ R) O; j, V0 W5 l9 K8 t}</P>, Q  b4 B9 T4 I8 C5 J2 M: |
<>int treehigh(t)
+ R, {1 t, O9 Y$ d7 ibitnode *t;8 ]6 L. b( {: d- B
{
/ v7 {' X: ~% M5 _/ _) @    int lh,rh,h;
: @+ M/ k( @0 _: L3 d9 p    if(t==NULL)
1 C9 _: S  Z& ~" U! v       h=0;
9 x( H" E7 y$ n6 @3 ?" A    else* Q2 o' P* x3 [! D+ W& C6 D# s* T6 K
    {
; m( D  ^3 U; d* V8 m        lh=treehigh(t-&gt;lchild);
: f/ j/ a& O) s/ Y        rh=treehigh(t-&gt;rchild);
5 S$ d$ W. H4 y3 H        h=(lh&gt;rh ? lh:rh)+1;, L) p! S- r3 H) R- _
    }# N  Y+ K5 r) `* w
    return h;
3 c, J' b& w1 Z" g0 o}</P>
" i, U. s0 Z: p* p! u' Y<>main()+ r% t' U: B6 w' u1 }2 |/ S3 y
{+ |8 s6 O7 ]' r+ E
    bitnode *t; int count=0;
( ?0 j5 g  G% p6 O    int n=0;
; ~4 p6 }0 _' d9 r4 J$ A9 [    printf("\n Please input TREE Data:\n");4 j3 E: f1 }' _1 q2 z8 M
    createbitree(&amp;t,&amp;n);2 o4 e: m7 y: [7 e: i0 u- y
    printf("\n This is TREE Struct: \n");3 z. }# |/ h& {9 Q/ Z/ k3 h0 x
    preordertraverse(t);8 L' i$ A  p# W2 K1 J
    countleaf(t,&amp;count);# u. f6 V8 C7 g& u
    printf("\n This TREE has %d leaves    ",count);$ n; a8 m6 I) @: N3 p2 s
    printf(",High of The TREE is: %d\n",treehigh(t));8 Y- m" x+ c, A4 d4 {% s
}</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-10-23 09:16 , Processed in 2.545784 second(s), 75 queries .

回顶部