103. 二叉树的锯齿形层序遍历
给你二叉树的根节点 root
,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[20,9],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
- 树中节点数目在范围
[0, 2000]
内
-100 <= Node.val <= 100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
func zigzagLevelOrder(root *TreeNode) [][]int { if root == nil { return [][]int{} } ans := [][]int{} que := []*TreeNode{root} for len(que) > 0 { n := len(que) vals := make([]int, n) for i:=0; i<n; i++ { nod := que[0] que = que[1:] if len(ans) % 2 == 1 { vals[n-1-i] = nod.Val } else { vals[i] = nod.Val } if nod.Left != nil { que = append(que, nod.Left) } if nod.Right != nil { que = append(que, nod.Right) } } ans = append(ans, vals) } return ans }
|