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