给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ var res [][]int func zigzagLevelOrder(root *TreeNode) [][]int { if root == nil { return [][]int{} } res = [][]int{} DSF(root, 0) for k, v := range res { if k % 2 != 0 { for i, n := 0, len(v); i < n / 2; i ++ { v[i], v[n-1-i] = v[n-1-i], v[i] } } } return res } func DSF(root * TreeNode, level int) { if root == nil { return } if level == len(res) { res = append(res, []int{}) } res[level] = append(res[level], root.Val) DSF(root.Left, level + 1) DSF(root.Right, level + 1) }