二叉树排序:一种基于二叉树的排序算法。
package
main
import
(
"fmt"
)
type
tree
struct
{
value
int
left, right
*
tree
}
func
Sort
(values []
int
) {
var
root
*
tree
for
_
,
v
:=
range
values {
root
=
add
(root, v)
}
appendValues
(values[:
0
], root)
}
func
appendValues
(values []
int
, t
*
tree)[]
int
{
if
t
!=
nil
{
values
=
appendValues
(values, t.left)
values
=
append
(values, t.value)
values
=
appendValues
(values, t.right)
}
return
values
}
func
add
(t
*
tree, value
int
)
*
tree {
if
t
==
nil
{
t
=
new
(tree)
t.value
=
value
return
t
}
if
value
<
t.value {
t.left
=
add
(t.left, value)
}
else
{
t.right
=
add
(t.right, value)
}
return
t
}
func
main
() {
values
:=
[]
int
{
4
,
5
,
3
,
6
,
1
,
8
,
7
,
9
,
0
,
2
}
Sort
(values)
fmt.
Printf
(
"%d
\n
"
, values)
}