103. 二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

例如:
给定二叉树 [3,9,20,null,null,15,7],


image.png

返回锯齿形层次遍历如下:

[
[3],
[20,9],
[15,7]
]

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func zigzagLevelOrder(root *TreeNode) [][]int {
    if root == nil{
        return nil
    }
    res := make([][]int,0,10)
    var dfs func(root *TreeNode,level int)
    dfs = func (root *TreeNode, level int){
        if root == nil{
            return 
        }
        if level >= len(res){
            res = append(res ,[]int{})
        }
        
        if level&1 == 0{
            res[level] = append(res[level],root.Val)
        }else{
            res[level] = append([]int{root.Val},res[level]...)
        }
        dfs(root.Left,level+1)
        dfs(root.Right,level+1)
    }
    dfs(root,0)
    return res
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进...
    HITZGD阅读 496评论 0 0
  • 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进...
    vbuer阅读 166评论 0 0
  • 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进...
    1f872d1e3817阅读 158评论 0 0
  • 姓名:朱秋燕 【知~学习】读《六项精进》一遍 【内容感悟分享】谦虚学习,每天进步一点点。 【行~实践】 一、修身:...
    Zhqiyn阅读 96评论 0 0
  • 三、斗 狼 韩老蛋的牛长得好了,名气也大了,方圆几十里的牛贩子经常登门要买他的牛。 有一天,韩老蛋...
    高安让阅读 629评论 4 3