QQ登录

只需要一步,快速开始

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

一颗很值得玩味的二叉树

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-10-4 06:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
#include <stdio.h>6 h$ S* P7 W! W
#include <stdlib.h>
  U3 s6 M( q3 x  l+ o#include <malloc.h>
: K: f: w2 c& }! e1 c% Q8 n, ?, j$ n
  \6 ]4 N+ B! n. F
( F$ W& B' Z+ Q" |+ @<>typedef struct bitnode9 L9 `9 t* T- F  `/ k4 {9 ^6 z) O
{+ D* O% n9 F" i0 \* A( Z
    char data;0 n+ U) p/ b, C) q5 d6 }
    struct bitnode *lchild, *rchild;
+ ]8 m" b  z  v2 I& A0 w7 t" {+ G7 C}bitnode, *bitree;</P>
7 B$ e* C% P  ?2 c- d& s<>void createbitree(t,n)
4 k& W4 H6 s, b' s) S# S  nbitnode ** t;
8 }' |& G4 v" fint *n;/ W% y/ c% ^+ x1 m7 ^0 H
{( }4 R$ o+ s' M
    char x;) @# `  o& s4 W, X- U
    bitnode *q;
/ \- W) g  d7 k6 {    *n=*n+1;, m% n4 B, s# ^8 Q3 o3 P% M
    printf("\n Input  %d  DATA:",*n);
$ J- C% E1 e- a: m! E% y    x=getchar();6 ]; z4 A; ?, E0 `9 f! b
    if(x!='\n')$ c4 m. w1 e4 l1 @* f& b
       getchar();* J1 s3 n( m" d3 ]2 N3 U
    if (x=='\n')
/ O4 u0 |+ g( Z: M4 R1 S       return;
& \" U# g4 a, M, G! W. v    q=(bitnode*)malloc(sizeof(bitnode));! `2 r! d! Q  g) @+ Q7 {
    q-&gt;data=x;
: N/ R# s" |7 i9 t6 |% D7 K    q-&gt;lchild=NULL;) w0 B. [( E3 f8 Z4 l% F- O6 `
    q-&gt;rchild=NULL;! E0 p" s1 T5 n& }; V$ o
    *t=q;
0 I2 ]9 |1 c1 q2 `! J  s  O9 d    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);4 K% a7 }$ V( r
    createbitree(&amp;q-&gt;lchild,n);4 W5 r) f  @; L5 }, _# h" m/ S
    createbitree(&amp;q-&gt;rchild,n);4 X; C$ S/ @5 M
    return;9 m# ]! A5 k( E8 Z) A' ^+ Q
}</P>
) {! {- m% s  i. `  B6 k<>void visit(e)
1 b. s  G6 @# \: Kbitnode *e;
* u. e. X; V% H5 e{
) H( F6 K& l2 y! @1 k6 ~( Y    printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e-&gt;data,e-&gt;lchild,e-&gt;rchild);( n5 M$ Z8 ~8 C: Q
}</P>
$ Z$ F- t/ T$ P; M! w5 R- G  a<>void preordertraverse(t)
  D  U# P9 v& ?+ w4 Z  @3 g& ~9 h5 ybitnode *t;
/ w/ i" @( y! @, f$ h- U% C5 b7 Z{/ C0 a4 O3 [+ z9 \0 e- g( C. ?$ E
    if(t)+ ?8 h: y2 Q# J5 ?' [
    {
  _( O0 a+ y& h5 t; R$ e. [& t        visit(t);$ x$ i0 H/ K+ c1 e0 s; b% }
        preordertraverse(t-&gt;lchild);
, z7 I" v5 z. W! T! |+ x, d* g2 L        preordertraverse(t-&gt;rchild);
% Z( Z+ B* D0 @& {) ^9 P        return ;5 f$ i6 c% h* [5 Z9 m
    }0 H! h! b5 O/ e; h) {
    else( s; V& V; e) E4 U+ {
       return ;
8 s# J- k' P7 U: x# ~}</P>
7 m+ H& M; @4 d6 h* `<>void countleaf(t,c): T6 |% O. H, [; r4 z
bitnode *t;# i( Q2 [% g$ f5 p) w9 t( [
int *c;
! h# S' j: [0 T5 c1 d{# B) K9 D8 E% ]+ U
    if(t!=NULL)0 C( f6 W, T/ X2 Z8 G6 g
    {
5 l+ R, E( v- E: M( d        if (t-&gt;lchild==NULL &amp;&amp; t-&gt;rchild==NULL). k+ F& C/ Z& i9 E) z, T4 s
        {
6 y8 E2 g0 a7 ^8 T            *c=*c+1;
4 I! w% ]2 |4 u" c6 O" O8 H& A% P% N        }& y! j/ ]! w6 u% z$ W
        countleaf(t-&gt;lchild,c);
' O# Z! S; M3 @3 a. F- Z/ A1 g        countleaf(t-&gt;rchild,c);
( b+ [* I6 R6 O* T" C2 o    }
: E9 Q3 R0 h8 ^% X6 g6 ~7 d/ c* T( m& @    return;; V5 }+ C2 j! |. t# M9 F
}</P>
" ?# s8 v% r0 a( ~<>int treehigh(t)# E6 b% z' \7 i  M* }
bitnode *t;
& M, }# \+ W- w# Y{/ @' T; V7 |$ Q  ~- k9 w0 v
    int lh,rh,h;
+ j' f8 H% G  Q0 A  t' t- ^$ m& B6 J    if(t==NULL): l' c" I- Q2 D! H8 O/ l# s/ ~6 n
       h=0;
0 B" r. Q+ Q% S, z7 {- r0 d2 ~    else
5 f% V4 @7 y! |. P    {
& I  p" q' E8 f: X$ D5 {, M        lh=treehigh(t-&gt;lchild);1 D' `/ \; h$ b, ?. Z
        rh=treehigh(t-&gt;rchild);
7 h" `* |8 G) @# E, [        h=(lh&gt;rh ? lh:rh)+1;/ {$ a8 g1 l* v. o
    }
$ T4 c; ~$ C" U9 Y    return h;
/ Q8 x1 ?  Q  t: d% \  d}</P>
! ~* c. N1 ?& o* @; |' G1 U9 O<>main()
: \5 |. b" d0 f, p8 Q% h{+ X' V9 M% I  Y
    bitnode *t; int count=0;! Z$ U4 @  Y0 {: @0 b; n( c3 _
    int n=0;7 D( f( M, ?7 I
    printf("\n Please input TREE Data:\n");" i. p  U/ E1 n, t3 C, {
    createbitree(&amp;t,&amp;n);
/ {- Y) n1 ?' A6 \3 @: R    printf("\n This is TREE Struct: \n");
+ j6 r4 I6 I9 @& Q1 N    preordertraverse(t);
, u8 U( e+ m# D" w3 t    countleaf(t,&amp;count);
, A! M- f; K4 o% }: o/ I* [  `    printf("\n This TREE has %d leaves    ",count);# S4 c0 E4 w7 z+ h
    printf(",High of The TREE is: %d\n",treehigh(t));
* p0 q4 F) d* t& k5 k}</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-27 13:05 , Processed in 3.827086 second(s), 75 queries .

回顶部