二叉树后续遍历权限控制算法

背景,我们想要做一个权限控制,父部门可以查看子部门的信息,子部门不能查看父部门的信息。 部门之间的关系是一棵多叉树,我们此处把部门关系暂时当作二叉树进行处理。 

package main

import "fmt"

func main() {
	SubTreeList(&TreeNode{1, &TreeNode{2, &TreeNode{4, &TreeNode{999, nil, nil}, nil}, &TreeNode{5, nil, nil}}, &TreeNode{3, &TreeNode{6, nil, nil}, &TreeNode{7, nil, nil}}})
}

var m map[int][]int

func SubTreeList(root *TreeNode) {
	m = make(map[int][]int)
	SubTreeListHelper(root)
	fmt.Println(m)

}
func SubTreeListHelper(root *TreeNode) []int {
	if root == nil {
		return nil
	}
	left := SubTreeListHelper(root.Left)
	right := SubTreeListHelper(root.Right)
	m[root.Val] = append(m[root.Val], left...)
	m[root.Val] = append(m[root.Val], right...)
	m[root.Val] = append(m[root.Val], root.Val)
	return m[root.Val]
}

 

 

相关推荐

  1. 算法笔记—

    2024-03-30 14:20:03       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 14:20:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 14:20:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 14:20:03       87 阅读
  4. Python语言-面向对象

    2024-03-30 14:20:03       96 阅读

热门阅读

  1. MySQL的日志系统是干什么的?底层原理是什么?

    2024-03-30 14:20:03       40 阅读
  2. [高考] 数学题的一般解题思路

    2024-03-30 14:20:03       42 阅读
  3. 【LeetCode热题100】155. 最小栈(栈)

    2024-03-30 14:20:03       41 阅读
  4. Ubuntu22.04安装 wordpress

    2024-03-30 14:20:03       49 阅读
  5. 数据库原理(含思维导图)

    2024-03-30 14:20:03       37 阅读
  6. 面试题nginx

    2024-03-30 14:20:03       51 阅读
  7. [CSS]中子元素在父元素中居中

    2024-03-30 14:20:03       45 阅读
  8. Flink 反压问题处理

    2024-03-30 14:20:03       39 阅读
  9. 扫地机器人

    2024-03-30 14:20:03       45 阅读
  10. Elasticsearch rollover API

    2024-03-30 14:20:03       40 阅读