type tree struct { value int left, right *tree } //Sort排序 func Sort(values []int) { var root *tree for _, v := range values { root = add(root, v)//将切片中的数值植入root中 } appendValue(values[:0], root) } //通过root的数据来重新拼接slice func appendValue(values []int, t *tree) []int { if t != nil { values = appendValue(values, t.left) values = append(values, t.value) values = appendValue(values, t.right) } return values } func add(t *tree, value int) *tree { if t == nil { //第一层(中间层)或者树的末端 t = new(tree) //new(tree)返回的是一个*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(){ x := []int {5,7,1,6,9,8,2,4,3} Sort(x[:]) fmt.Println(x) }