二叉树实现一个插入排序

二叉树来实现一个插入排序

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)
}
posted @ 2025-07-17 14:34  dwhere  阅读(4)  评论(0)    收藏  举报