Go slice的一个坑
问题 最近在刷leedcode,求二叉树的路径和,给定一个二叉树,求所有符合条件的路径。原题见 113. Path Sum II
这道题需要遍历所有的节点,并且记录遍历路径上的节点,可以使用回溯法,深度优先的方法。
不过最近用习惯了广度优先的方法,把二叉树变成一个有序的队列,这种思想很好玩,把多个选择的,需要遍历的变成一个有序的来进行遍历即可,就是一个万能模板。
下面贴下代码
var result [][]int var ch = make(chan *TreeNode, 100) var sumChan = make(chan int, 100) var nodes = make(chan []int, 100) for len(ch) > 0 { for i := 0; i < len(ch); i++ { //获取当前节点 cur := <-ch //获取父节点的总和 parentSum := <-sumChan //获取父节点的所有路径节点序列 parents := <-nodes //当前节点的总和 curSum := parentSum + cur.Val //当前节点的序列 curNodes := append(parents, cur.Val) if cur.Left == nil && cur.