• Go语言实现:【剑指offer】按之字形打印二叉树


    该题目来源于牛客网《剑指offer》专题。

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

    Go语言实现:

    type TreeNode struct {
       Val   int
       Left  *TreeNode
       Right *TreeNode
    }func printTreeNode(root *TreeNode) [][]int {
       var result [][]int
       if root == nil {
          return result
       }//初始化一个队列
       list := list.New()
       //从头部插入root
       list.PushFront(root)
       //开始层次遍历,在广度优先遍历基础上稍加调整
       for level := 0; list.Len() > 0; level++ {
          var currentLevel []int
          //取本层的节点数
          curentLenth := list.Len()
          for i := 0; i < curentLenth; i++ {
             //从尾部移除,Remove返回值为接口类型,需指定为TreeNode
             node := list.Remove(list.Back()).(*TreeNode)
             //root默认从左往右
             currentLevel = append(currentLevel, node.Val)
             //下一层从右往左
             if level%2 == 0 {
                if node.Right != nil {
                   list.PushFront(node.Right)
                }
                if node.Left != nil {
                   list.PushFront(node.Left)
                }
             } else { //继续从左往右
                if node.Left != nil {
                   list.PushFront(node.Left)
                }
                if node.Right != nil {
                   list.PushFront(node.Right)
                }
             }
          }
          //当前层结束
          result = append(result, currentLevel)
       }return result
    }
    
  • 相关阅读:
    数据库的连接、会话与SQLite
    数据库的连接
    SQlite的结构——存储管理
    数据库 schema含义
    SQLite这么娇小可爱,不多了解点都不行啊
    简析打开数据库流程
    计算机系为什么要学数据库原理和设计?
    SQLite的sqlite3_prepare_v2
    Sqlite3并发读写注意事项
    SQLite也可能出现死锁
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099386.html
Copyright © 2020-2023  润新知