树的遍历

算法需要通过函数来体现.
树型结构的遍历是算法的顶峰.

虽然还有更复杂的图的结构,但是图的遍历存在不确定性,不够严谨完美.

树型结构是一种层次(嵌套)结构,就象俄罗斯套娃一样,子树与原始树的结构相同.
整个世界都可以通过树型结构的数据来描述.
通过递归遍历可以实现对树型结构的遍历.
对于树型结构的递归遍历意味着控制了整个世界

//树型结构的递归算法:
//将 struct{id,text,pid} 结构的数组(allitems)转换成:树型(层级)结构的 map数组
//使用方法:maketreee(allitems,0),0 表示根元素的 pid = 0
func makeTreee(allitems, root int) []interface{} {
    var mapArr []interface{}
    for _, item := range allitems {
        if item.pid == root {
                        //create new node:
            newNode := make(map[string]interface{})

                        //set text for new node:
                        newNode["text"] = item.text

                        //create children(sub_tree) of the new node:
            children := makeTreee(allitems, item.id)
            if len(children) > 0 {
                newNode["children"] = children
            }

                        //append new node:
            mapArr = append(mapArr, newNode)
        }
    }
    return mapArr
}

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

推荐阅读更多精彩内容