使用递归、二叉树、实现排序

使用递归方式实现二叉树,再通过二叉树的结构特点对切片进行排序。

func main() {
    sli := []int{1, 3, 7, 2, 4, 8, 6, 0, 5, 9}
    var tree *tree
    for _, v := range sli {
        tree = AddTree(tree, v)
    }
    sli2 := []int{}
    sli2 = SortTree(tree, sli2)
    fmt.Println(sli2)

}

//中序插入
func AddTree(t *tree, v int) *tree {

    if t == nil {
        t = new(tree)
        t.data = v

    } else if t.data < v {
        t.rTree = AddTree(t.rTree, v)

    } else {
        t.lTree = AddTree(t.lTree, v)

    }

    return t

}

//中序遍历
func SortTree(tree *tree, result []int) []int {

    if tree.lTree != nil {
        result = SortTree(tree.lTree, result)

    }

    result = append(result, tree.data)

    if tree.rTree != nil {
        result = SortTree(tree.rTree, result)
    }
    return result

}

type tree struct {
    data         int
    lTree, rTree *tree
}

当然了,排序还有很多种方法...二叉树使用场景多用在目录结构、爬虫爬取到的URL等...本例只为练习递归思维。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容