//
建立二叉樹并先根遍歷的代碼
public
?
class
?BinaryTreeTest?
{

?
public
?
static
?
void
?main(String?args[])?
{
//
主方法
??BinaryTreeTest?b?
=
?
new
?BinaryTreeTest();

??
int
?data[]?
=
?
{?
12
,?
11
,?
34
,?
45
,?
67
,?
89
,?
56
,?
43
,?
22
,?
98
?}
;
??BinaryTree?root?
=
?
new
?BinaryTree(data[
0
]);

??System.out.print(
"
二叉樹的中的數據:
"
);
//
建立二叉樹
??
for
?(
int
?i?
=
?
1
;?i?
<
?data.length;?i
++
)?
{
???root.insertTree(root,?data[i]);
???System.out.print(data[i?
-
?
1
]?
+
?
"
;
"
);
??}
??System.out.println(data[data.length?
-
?
1
]);

??
int
?key?
=
?Integer.parseInt(args[
0
]);


??
if
?(b.searchkey(root,?key))?
{
???System.out.println(
"
找到了:
"
?
+
?key);

??}
?
else
?
{
???System.out.println(
"
沒有找到:
"
?
+
?key);
??}
?}
?
public
?
boolean
?searchkey(BinaryTree?root,?
int
?key)?
{
//
查詢
??
boolean
?bl?
=
?
false
;

??
if
?(root?
==
?
null
)?
{
???bl?
=
?
false
;
???
return
?bl;

??}
?
else
?
if
?(root.data?
==
?key)?
{
???bl?
=
?
true
;
???
return
?bl;

??}
?
else
?
if
?(key?
>=
?root.data)?
{
???
return
?searchkey(root.rightpoiter,?key);
??}
??
return
?searchkey(root.leftpoiter,?key);
?}
}
class
?BinaryTree?
{
//
二叉樹類
?
int
?data;

?BinaryTree?leftpoiter;

?BinaryTree?rightpoiter;


?BinaryTree(
int
?data)?
{
??
this
.data?
=
?data;
??leftpoiter?
=
?
null
;
??rightpoiter?
=
?
null
;
?}
?
public
?
void
?insertTree(BinaryTree?root,?
int
?data)?
{
//
插入節點
??
if
?(data?
>=
?root.data)?
{

???
if
?(root.rightpoiter?
==
?
null
)?
{
????root.rightpoiter?
=
?
new
?BinaryTree(data);

???}
?
else
?
{
????insertTree(root.rightpoiter,?data);
???}
??}
?
else
?
{

???
if
?(root.leftpoiter?
==
?
null
)?
{
????root.leftpoiter?
=
?
new
?BinaryTree(data);

???}
?
else
?
{
????insertTree(root.leftpoiter,?data);
???}
??}
?}
}
//
?end
講解:一個尋找關鍵字--searchkey
另一個是插入一個結點:insertTree
另外這是一個完全的先序遍歷二叉樹的語法。先根結點,再左結點,如無再右結點,如些加歸至搜索完畢。??
posted on 2007-02-27 11:41
保爾任 閱讀(408)
評論(0) 編輯 收藏 所屬分類:
Arithmetic & Data Structure