zoukankan      html  css  js  c++  java
  • Go语言实现:【剑指offer】把二叉树打印成多行

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

    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

    需要分层,二维数组。

    Go语言实现:

    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    func levelOrder(root *TreeNode) [][]int {
        var result [][]int
        
        if root == nil {
           return result
        }
        
        //初始化一个队列
        list := list.New()
        //从头部插入root
        list.PushFront(root)
        
        //开始层次遍历,即广度优先遍历
        for list.Len() > 0 {
            var currentLevel []int
            //取本层的节点数
            curentLenth := list.Len()
            for i := 0; i < curentLenth; i++ {
                //从尾部移除,Remove返回值为接口类型,需指定为TreeNode
                node := list.Remove(list.Back()).(*TreeNode)
                currentLevel = append(currentLevel, node.Val)
                if node.Left != nil {
                    list.PushFront(node.Left)
                }
                if node.Right != nil {
                    list.PushFront(node.Right)
                }
            }
            //当前层结束
            result = append(result, currentLevel)
        }
        
        return result
    }
    
  • 相关阅读:
    cg数据类型
    线程和流的历史遗留
    流的总结及小问题

    集合练习
    集合属性的整理
    集合
    整理
    面向对象中知识的薄弱点
    自己的小问题和数组常用的方法
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099388.html
Copyright © 2011-2022 走看看