a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 114|回复: 0

[专业语言] Java认证辅导之Java实现二叉树遍历算法

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导之Java实现二叉树遍历算法
6 [( A: I! U' @% y4 n  o1 v! z6 r5 E在JAVA中实现二叉树,程序如下  o8 E( |, t+ u- `1 ^
//********************************************************************; C7 `' Y6 ^1 n* Q# {( H* e
//filename: BinaryTreeTest.java
% ?$ z3 Y, @4 ]6 o- O: {//purpose: test a binarytree with java  V8 t6 ]. {4 g6 g, [9 O
//date: 2002/12/18" N4 Q9 r) A6 Z$ E1 A% W
//author: flyfan
1 d2 }# l0 Y) I% o3 `//ver: 0.17 j, ^" F' V# z' [. b; z6 F
//********************************************************************# ?" i# X9 O; K4 `' S+ s) Q: a
public class BinaryTreeTest, @3 ~8 }; K* |+ X: Q7 i
{
" j0 w! H0 D$ mpublic static void main(String args[])
1 c% t- I! I( R, y9 V1 ]. ]. i$ f{& h( B4 Z6 S9 r& U& @
BinaryTreeTest b=new BinaryTreeTest();% L3 u& U: T4 r3 L% P/ j0 C
int data[]={12,11,34,45,67,89,56,43,22,98};
3 ~. o# l3 g% I1 H+ d: rBinaryTree root =new BinaryTree(data[0]);
+ g) }$ }4 j* J7 gSystem.out.print(“二叉树的中的数据:  ”);
0 n. `& G# v1 O/ @6 K( v4 Tfor(int i=1;i《data.length;i++)* i% z5 b4 f- K1 C: y/ b
{3 X$ \' l5 F( s8 c
root.insertTree(root,data[i]);
- I% T* f& q* G# USystem.out.print(data[i-1]+“;”);! A" N1 j+ i1 l4 v9 `5 c- z
}9 L+ @8 }' l7 A+ X
System.out.println(data[data.length-1]);
+ X' ^3 s: d. `0 I" W$ D4 G- u9 Oint key=Integer.parseInt(args[0]);7 D+ c9 T/ G: C' h
if(b.searchkey(root,key))
6 y% Q; m' c% m, b. [% U{# |, [& Z- o& B- X" X4 A
System.out.println(“找到了:”+key);2 Q  q0 g. Q( n# A
}. u; F4 N5 s9 [9 W
else
. I* C* ?4 d8 M" c, |) Y. s1 n{* E) p7 S' }& u- g8 r
System.out.println(“没有找到:”+key);7 T; S# A( M5 f0 H6 q& N
}  _3 `$ o/ i* {( v
}
' R) A9 F- h1 N0 H2 J7 X5 jpublic boolean searchkey(BinaryTree root, int key)
: t9 X0 v& c! d{
$ S. e7 \2 c* tboolean bl=false;. u* {# v' ~. t# ^
if(root==null)
& l! ?7 D, F/ N& _8 p{
& ?( e; o9 \" Z- O$ y) R+ u# B7 pbl=false;
' m5 B, h& e0 A( g* V" p' Y6 {return bl;5 l- q1 t3 u6 F" n0 E2 a% e
}& s9 l5 p/ {) e+ H! V
else if(root.data==key)
6 C3 E' B7 d: L; H) P) A{
0 V  `1 y) P# F+ I, s8 p7 U/ ^
* ^' r  C( N! j! b0 c! [9 a# G1 y  W$ a7 F) b
bl=true;
9 _+ _( x+ Z; }+ k* v+ sreturn bl;- p. n2 q1 ^5 a* F6 S0 A
}
" `3 W6 s0 c8 selse if(key》=root.data)
% A. C/ L% g  ]. t4 `4 Y{. P7 c8 _' u/ W
return searchkey(root.rightpoiter,key);+ L9 k4 O/ X  B! _! \3 X3 x1 Z1 O0 y
}' b! D; o8 ^  r+ T& [2 h( l
return searchkey(root.leftpoiter,key);
3 f0 \3 f/ d+ s* `}/ k3 z; ]5 F! m. r
}
9 L$ v& ^4 Y. h2 [2 y! wclass BinaryTree
* f% a1 _7 U( ~0 [% J4 M, E+ k- \+ E{
1 e. R4 H- U- a( ]' P, gint data;
8 U* W) n8 |+ A# x% wBinaryTree leftpoiter;6 ~0 y. o9 s2 {# x! ~( J
BinaryTree rightpoiter;
( j9 _* H8 E  Z$ z2 D8 u, ]8 nBinaryTree(int data)4 w+ l* I' g( V. K1 ^# p
{
& J4 x0 g8 |: N# p4 l7 Ythis.data=data;
' R2 L. E( z' f: C8 }leftpoiter=null;
* R  t: \  _5 ?9 |rightpoiter=null;
7 {9 S9 T! i: |+ ]+ b9 M}
- J( F. X# M7 W  Upublic void insertTree(BinaryTree root, int data)
& ]2 l+ c: _3 A, }* v; @. j{4 `0 W' C& z7 t- s  A' H: g
if(data》=root.data)
( L8 p+ c' R4 l; z  ?) H- a{
8 y2 V9 w; H) t8 d' Tif(root.rightpoiter==null)
% O& L( h& }5 J. R* ^# P! u{
+ O! y5 j& @1 d1 b8 e% m- d: yroot.rightpoiter=new BinaryTree(data);
2 S/ X* i- ]  W. x}0 Z1 \7 t! L- }3 L7 B0 p* p. H; {
else
( M, p0 @& @8 h{. P' K! n, T1 ^, W. B
insertTree(root.rightpoiter,data);# M7 X( _. V" `& `+ I; F
}7 H* ?3 O1 U* u( \% E
}
! D3 Z8 P4 [" Q1 g: I1 {& T% nelse4 ~4 N! n8 n9 I( \" l" ?. E
{
# s9 }) S2 j+ W* w3 f( Q  lif(root.leftpoiter==null)3 m3 v2 c5 {2 `( g# h
{
9 |% I  w4 g. k8 p% u/ l! }root.leftpoiter=new BinaryTree(data);5 l$ V9 u4 {' h: D# l/ D2 _* l) `
}
+ q! d* t$ N+ h& P# e# \else
) u, m+ |2 q4 m" B9 y! Z' R{  d) r; J; d& o( b! i+ {  z0 ~
insertTree(root.leftpoiter,data);
3 ]) v/ R0 E; M}
" l; ?4 `5 O8 E: L& Q8 r# Z}) L/ {0 b$ w( Q/ B. P4 Z/ d
}6 H% A4 m' B/ y4 B! \5 _: z
}$ X$ h0 ?, R/ ^" d0 g* X( v
//end# y  N) `0 {, }8 k+ }* ^
讲解:上述各序小,但层次分明,结构严谨,如果有数据库结构知识与C语文能力的JAVA初学者一看就明白,二个方法如同C语文中的函数,一个寻找关键字--searchkey 另一个是插入一个结点:insertTree 而class BinaryTree 如同一个C语言中的共同体。( c; Q$ n" z' v' \
另外这是一个完全的先序遍历二叉树的语法。先根结点,再左结点,如无再右结点,如些加归至搜索完毕。
0 _# l; V, [! ~3 l运行命令行:java BinaryTreeTest intNumber(一个整数)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-13 02:16 , Processed in 0.211766 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表