本文主要是介绍leetcode103 二叉树的锯齿形层序遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
示例
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[20,9],[15,7]]
解析
这道题就是在二叉树层序遍历的基础上,需要能判断出来是偶数层(加个标识),然后偶数层就进行反转(需要自己实现一个反转函数)
func zigzagLevelOrder(root *TreeNode) [][]int {ans := [][]int{}if root == nil {return ans}queue := list.New()queue.PushBack(root)flag := falsefor queue.Len() > 0 {length := queue.Len()tmp := []int{}for i := 0; i < length; i++ {node := queue.Remove(queue.Front()).(*TreeNode)if node.Left != nil {queue.PushBack(node.Left)}if node.Right != nil {queue.PushBack(node.Right)}tmp = append(tmp, node.Val)}if flag {reverseArray(tmp)}flag = !flagans = append(ans, tmp)}return ans
}func reverseArray(arr []int) {for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {arr[i], arr[j] = arr[j], arr[i]}
}
这篇关于leetcode103 二叉树的锯齿形层序遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!