- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
#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->data=x;
: N/ R# s" |7 i9 t6 |% D7 K q->lchild=NULL;) w0 B. [( E3 f8 Z4 l% F- O6 `
q->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->data,q->lchild,q->rchild);4 K% a7 }$ V( r
createbitree(&q->lchild,n);4 W5 r) f @; L5 }, _# h" m/ S
createbitree(&q->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->data,e->lchild,e->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->lchild);
, z7 I" v5 z. W! T! |+ x, d* g2 L preordertraverse(t->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->lchild==NULL && t->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->lchild,c);
' O# Z! S; M3 @3 a. F- Z/ A1 g countleaf(t->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->lchild);1 D' `/ \; h$ b, ?. Z
rh=treehigh(t->rchild);
7 h" `* |8 G) @# E, [ h=(lh>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(&t,&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,&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
|