首页 > 其他分享 >剑指Offer 32 - III. 从上到下打印二叉树

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

时间:2023-08-27 21:35:10浏览次数:47  
标签:TreeNode Offer int 32 打印 二叉树 var

题目链接: 剑指Offer 32 - III. 从上到下打印二叉树

题目描述:

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

解法思路:

本题在一题的基础上,区分打印方向,加一个bool型的方向变量即可;

代码:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
    if root == nil {
        return nil
    }
    var res [][]int
    var q []*TreeNode
    q = append(q,root)
     d := true    //表示输出方向,true是从左向右
    for len(q) > 0{
        n := len(q)
        var path []int
        for i:=0;i<n;i++{
            node := q[0]
            q = q[1:]
            path = append(path,node.Val)
            if node.Left != nil {
                q = append(q,node.Left) 
            }
            if node.Right != nil{
                q = append(q,node.Right)
            }
        }
        if d == false{
            for i,j := 0,len(path)-1;i < j; i,j = i+1,j-1 {
                path[i],path[j] = path[j],path[i]
            }
            d = true
        }else{
            d= false
        }
tmp := make([]int,len(path))
    copy(tmp,path)
    res = append(res,tmp)


    }
    return res
    

}

标签:TreeNode,Offer,int,32,打印,二叉树,var
From: https://www.cnblogs.com/lxing-go/p/17660896.html

相关文章

  • 剑指Offer 32 - II. 从上到下打印二叉树 II
    题目链接:剑指Offer32-II.从上到下打印二叉树II题目描述:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。解法思路:本题与上题的唯一区别就是在输出的时候,要将同一层的数输出在一行,这就意味着你需要知道哪些数是在一行的;这里巧妙的利用求队列......
  • 剑指Offer 32 - I. 从上到下打印二叉树
    题目链接:剑指Offer32-I.从上到下打印二叉树题目描述:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。解法思路:本题就是从考察二叉树的层序遍历,直接上代码:代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......
  • 剑指 Offer 61. 扑克牌中的顺子(简单)
    题目:classSolution{public:boolisStraight(vector<int>&nums){sort(nums.begin(),nums.end());//首先要对数组进行排序intcount=0;//count用来记录万能牌0的个数,count相当于用来补牌for(auton:nums){if(n==0......
  • 二叉树层序遍历队列实现
    参考:二叉树的层序遍历(两种方法实现)_askunix_hjh的博客-CSDN博客题解|#求二叉树的层序遍历#_牛客博客(nowcoder.net)题解二:BFS(迭代)主要思路:广度优先8.27用到的思路是广度优先,循环,不是递归......
  • 剑指Offer 30. 包含min函数的栈
    题目链接:剑指Offer30.包含min函数的栈题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min、push及pop的时间复杂度都是O(1)。解法思路:首先理解题意:题目是要实现一个可以在O(1)的时间复杂度内得到栈中最小值得栈,如果是常......
  • 剑指 Offer 40. 最小的k个数(简单)
    题目:classSolution{public:vector<int>getLeastNumbers(vector<int>&arr,intk){vector<int>result;sort(arr.begin(),arr.end());for(inti=0;i<k;i++){result.push_back(arr[i]);......
  • 剑指 Offer 17. 打印从1到最大的n位数(简单)
    题目:classSolution{public:vector<int>printNumbers(intn){vector<int>result;intmax=pow(10,n)-1;//最大n位数的求法for(inti=1;i<=max;i++){result.push_back(i);}returnresul......
  • 剑指Offer 29. 顺时针打印矩阵
    题目链接:剑指Offer29.顺时针打印矩阵题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。解法思路:本题的题意比较简单,也就是螺旋打印矩阵,但是这里面有技巧,使用数组定义好在打印过程中的四个移动方向在遍历的过程中,每次都是在该方向上移动,当移动......
  • 【STM32】8_0 DAN EX:UASER
    DMA简介直接存储器访问(DMA)用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何CPU操作的情况下通过DMA快速移动数据。这样节省的CPU资源可供其它操作使用。DMA控制器基于复杂的总线矩阵架构,将功能强大的双AHB主总线架构与独立的FIF......
  • RS232串口专题
    启动串口调试助手项目运行截图基础类封装数据类型转换类usingSystem;usingSystem.Text;namespaceSerialPortHelperDemo{///<summary>///16进制使用的隔离符枚举///</summary>publicenumEnum16Hex{None,//无Blank,/......