package
com.oterman.test;
/**
* 二叉树,两颗子树,左小右大;
* 前序遍历:自己,左,右;
* 中序:左,自己,右
* 后序:左,右,自己
*
@author
大蘑菇
*
*/
class
Node {
public
int
value
;
public
Node
left
;
//左节点
public
Node
right
;
//存入数据,左小,右大;
public
void
store(
int
value)
{
if
(value<
this
.
value
)
{
if
(
left
==
null
)
{
left
=
new
Node();
left
.
value
=value;
}
else
{
left
.store(value);
//迭代存储,
}
}
else
if
(value>
this
.
value
)
{
if
(
right
==
null
)
{
right
=
new
Node();
right
.
value
=value;
}
else
{
right
.store(value);
}
}
}
/**
* 查找数据,迭代查找;
*/
public
boolean
find(
int
value)
{
System.
out
.println(
"happen "
+
this
.
value
);
if
(value ==
this
.
value
)
{
return
true
;
}
else
if
(value>
this
.
value
)
{
if
(
right
==
null
)
return
false
;
return
right
.find(value);
}
else
{
if
(
left
==
null
)
return
false
;
return
left
.find(value);
}
}
/**
* 先序遍历,自己节点先遍历,然后左节点,右节点;
*/
public
void
preList()
{
System.
out
.print(
this
.
value
+
","
);
if
(
left
!=
null
)
left
.preList();
if
(
right
!=
null
)
right
.preList();
}
/**
* 中序遍历,左,自己,右;
*/
public
void
middleList()
{
if
(
left
!=
null
)
left
.preList();
//注意是preList(),不是middleList();
System.
out
.print(
this
.
value
+
","
);
if
(
right
!=
null
)
right
.preList();
}
/**
* 后序遍历,左,右,自己;
*/
public
void
afterList()
{
if
(
left
!=
null
)
left
.preList();
if
(
right
!=
null
)
right
.preList();
System.
out
.print(
this
.
value
+
","
);
}
public
static
void
main(String [] args)
{
int
[] data =
new
int
[10];
for
(
int
i=0;i<data.
length
;i++)
{
data[i] = (
int
)(Math.random()*100) + 1;
System.
out
.print(data[i] +
","
);
}
System.
out
.println();
Node root =
new
Node();
root.
value
= data[0];
for
(
int
i=1;i<data.
length
;i++)
{
root.store(data[i]);
}
root.find(data[8]);
root.preList();
System.
out
.println();
root.middleList();
System.
out
.println();
root.afterList();
}
}
结果:
46,91,26,19,18,11,25,2,84,14,
happen 46
happen 91
happen 84
46,26,19,18,11,2,14,25,91,84,//前序
26,19,18,11,2,14,25,46,91,84,//中序
26,19,18,11,2,14,25,91,84,46,//后序