二叉树实现一个插入排序
二叉树来实现一个插入排序
go 递归
package main
import "fmt"
type tree struct {
value int
left, right *tree
}
func treeSort(values []int) []int {
var t *tree
for _, v := range values {
t = add(t, v)
}
values = appendValues(t, values[:0])
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 appendValues(t *tree, values []int) []int {
if t != nil {
values = appendValues(t.left, values)
values = append(values, t.value)
values = appendValues(t.right, values)
}
return values
}
func main () {
values := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3}
values = treeSort(values)
fmt.Println(values)
}

浙公网安备 33010602011771号