zoukankan      html  css  js  c++  java
  • 剑指 Offer 32

    剑指 Offer 32 - III. 从上到下打印二叉树 III

    地址:剑指 Offer 32 - III. 从上到下打印二叉树 III

    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

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

    3

    /
    9 20
    /
    15 7
    返回其层次遍历结果:

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

    提示:

    节点总数 <= 1000

    
    
    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    func levelOrder(root *TreeNode) [][]int {
        res := make([][]int, 0)
        if root == nil {return res}
    
        queue := make([]*TreeNode, 0)
        queue = append(queue, root)
        cnt := 1
    
        for len(queue) > 0 {
            floorRes := make([]int, 0)
    
            for i := len(queue); i > 0; i-- {
                curTreeNode := queue[0]
                queue = queue[1:]
                floorRes = append(floorRes, curTreeNode.Val)
                if curTreeNode.Left != nil {queue = append(queue, curTreeNode.Left)}
                if curTreeNode.Right != nil {queue = append(queue, curTreeNode.Right)}
            } 
    
            if (cnt & 1) == 0 {
                reverse(floorRes)
            }
            res = append(res, floorRes)
            cnt += 1
        }
        return res
    }
    
    func reverse(floorRes []int)  {
        for i, j := 0, len(floorRes)-1; i <= j; i, j = i+1, j-1 {
            floorRes[i], floorRes[j] = floorRes[j], floorRes[i]
        }
    }
    
  • 相关阅读:
    [SDOI2009]HH的项链
    [PA2010]Riddle
    纪念品
    [Code+#4]最短路
    [JSOI2007]文本生成器
    绝世好题
    一个输入框提示列表效果
    iGOOGLE分栏
    获取图片地址然后显示在input中
    网页配色工具。
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14248029.html
Copyright © 2011-2022 走看看