a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 136|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导之Java实现二叉树遍历算法
9 `: E9 p: N/ j' @在JAVA中实现二叉树,程序如下
5 Z  ^. E. v# O//********************************************************************
) T6 G# g9 u( H- D- J//filename: BinaryTreeTest.java* b& ?( F% T0 h) D: Y% U
//purpose: test a binarytree with java6 N: x, b$ {8 K6 l
//date: 2002/12/18
+ Q3 Y/ [2 f: O- N: C6 f# X//author: flyfan! G3 b- h! y+ `/ B) t/ ~. b8 R- u$ H
//ver: 0.15 U9 O$ Y! g6 h
//********************************************************************
# ?+ d! R  {* K4 r/ l' h8 n7 {7 ]public class BinaryTreeTest: l# _. J8 Q- w! H: W" Z
{$ C% j5 Q  L/ {. e& Y# A
public static void main(String args[])+ {1 i$ @, G/ ~1 u3 Y0 K% s3 G2 F
{% M* p- v0 i2 j, J* n6 H
BinaryTreeTest b=new BinaryTreeTest();) i, j- Z, r- {# R& [
int data[]={12,11,34,45,67,89,56,43,22,98};' G$ R; U: n( H* G/ d  S: ~- _* P
BinaryTree root =new BinaryTree(data[0]);
, I* U1 K3 B5 J9 e2 E& lSystem.out.print(“二叉树的中的数据:  ”);) |% @; q1 B  b! K4 S
for(int i=1;i《data.length;i++)
9 p. Y' f" [3 J  F{( s" B5 t1 L; D$ Y+ X
root.insertTree(root,data[i]);5 {6 |4 T' ~9 w" o
System.out.print(data[i-1]+“;”);) o5 ^6 {' ^$ |% T3 G  s" N
}% a; a; h' N8 n+ J5 B: @
System.out.println(data[data.length-1]);
3 m. k8 |5 f- o& z( Vint key=Integer.parseInt(args[0]);' Q$ W' h% o% A* H, a9 u* d$ `7 \
if(b.searchkey(root,key))4 [/ S# E- q- p7 X  r
{% b: T6 h. ~  Q5 e5 x4 M4 Y$ F
System.out.println(“找到了:”+key);" j( ^& O/ O9 C6 o
}! f4 I1 \" O) L0 l: a- n1 _" \
else4 E# X0 i, ?) p  r) |
{) W6 W4 C5 E2 f6 q3 x) s- f
System.out.println(“没有找到:”+key);4 |8 {2 b8 E: _
}# W! h% o1 C* Y- r" c1 s
}
& P% A2 Q6 ^/ i; V8 P7 u7 i% ^0 ?public boolean searchkey(BinaryTree root, int key)
. E  w# j* v3 s! d* S* O8 \{; t1 F1 k. M+ ~1 |
boolean bl=false;
; P% Q3 c1 h2 H1 A9 [if(root==null)# ~1 O! H+ _/ F+ s! X# S' G0 G
{4 U7 ^% P% r9 e+ A# l
bl=false;
- L5 b7 R. p& l! R2 A3 L- H4 |return bl;
) q3 A) V; t- K' q! L, d  |# j6 H}
. ?& b2 M# Z% I/ l+ jelse if(root.data==key)7 }, E- J. E& [1 _; b
{( z0 n5 Y, ]: j$ ?1 U( v$ _
1 C$ _, |: w: @( G' ]
/ |4 s) n! p  ?
bl=true;
" R( [/ n$ X7 Ireturn bl;6 ~3 V: `/ b) \/ q5 L
}$ n; P, I" N+ h, r
else if(key》=root.data)
* K4 P1 l6 O; K0 Q: o2 D{
* `) A. R* ?4 _4 lreturn searchkey(root.rightpoiter,key);
! |- ]5 K! j6 M6 m9 s: V7 s3 K}
5 a! y* |1 B& xreturn searchkey(root.leftpoiter,key);$ A1 z$ N' E' v9 Y  |0 l! N, y5 p
}
& a; D- E$ p% T; q0 m5 d' c* k2 ]; x8 }; ]}
  `, J+ p6 M) B5 i8 ~) P( c' q  o" l$ |class BinaryTree
2 a9 ~# h+ p  p. t{* v$ B% G$ ?! t1 D
int data;/ p3 J, P5 V- C# K9 h) O# w
BinaryTree leftpoiter;- C( d" a0 \/ `2 _6 h5 N0 G  b/ c% w( w
BinaryTree rightpoiter;
5 J( j' u9 |+ [& S% ~BinaryTree(int data)
* t$ [1 J6 W5 N( {$ v; x( C. o+ J  N{
8 j' w* A- q: m- p7 G% E5 Mthis.data=data;
' N# i: d$ o! k- oleftpoiter=null;" h2 t( L) K6 K% F8 L5 p9 K4 M- a
rightpoiter=null;
8 J+ U, i8 j. W  ^* W}
7 n) f" r" z6 W2 n3 m3 _- Ipublic void insertTree(BinaryTree root, int data); D, h3 u) X1 d
{) J* X2 A9 ?3 D8 \) ~
if(data》=root.data)( P+ V5 e$ j: u# L9 I; \4 S8 f* g
{8 L+ Q& _' }+ C  S
if(root.rightpoiter==null)3 T. l& ?; M- n3 k
{  t3 a. v3 U% w" v8 o, C( E' O
root.rightpoiter=new BinaryTree(data);# T6 [3 l0 [; o4 M# x
}' e, o; G5 I. `
else
4 T6 U( B# f$ b1 ?/ I1 v7 f: a{' N! Q7 L5 i7 ~
insertTree(root.rightpoiter,data);1 w; r+ k8 M/ }
}# ^* t4 I% N9 a: f4 O' Y
}, D3 G4 ^4 K; N% C
else4 Z; c  S" x& S2 N
{
( ~7 V* Q7 R5 a; g1 s( @( P9 Uif(root.leftpoiter==null)
) T' ~4 J# A7 H{1 I7 Q' ?0 R  z4 M, u
root.leftpoiter=new BinaryTree(data);
9 [6 Y8 A$ h! j+ {7 e" `  I}
1 C+ _* ~( f( v# delse: q2 O2 Q3 J7 R  B( `0 K
{- ]+ r( b" ~" {+ W
insertTree(root.leftpoiter,data);
9 `  i* V$ G2 D5 O}
. [& ?. U( D' I% g$ L# Q9 O/ i/ N}
2 s5 |: s- ?9 V1 y2 s+ r& o1 m; v) ^}
/ U3 a3 X% z7 n6 H}) \" y; S8 O; r
//end
5 L0 O- D. L4 u讲解:上述各序小,但层次分明,结构严谨,如果有数据库结构知识与C语文能力的JAVA初学者一看就明白,二个方法如同C语文中的函数,一个寻找关键字--searchkey 另一个是插入一个结点:insertTree 而class BinaryTree 如同一个C语言中的共同体。2 `9 z# |+ p# E; z; G
另外这是一个完全的先序遍历二叉树的语法。先根结点,再左结点,如无再右结点,如些加归至搜索完毕。
  T+ A( L0 u/ G1 @' V运行命令行:java BinaryTreeTest intNumber(一个整数)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 23:58 , Processed in 0.197297 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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