该题目来源于牛客网《剑指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 {
//取本层的节点数
curentLenth := list.Len()
for i := 0; i < curentLenth; i++ {
//从尾部移除,Remove返回值为接口类型,需指定为TreeNode
node := list.Remove(list.Back()).(*TreeNode)
result = append(result, node.Val)
if node.Left != nil {
list.PushFront(node.Left)
}
if node.Right != nil {
list.PushFront(node.Right)
}
}
} return result
}

Go语言实现:【剑指offer】从上往下打印二叉树的更多相关文章

  1. 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)

    从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...

  2. 剑指offer——从上往下打印二叉树

    题目描述:从上到下打印二叉树的节点,同一层的从左到右打印 思路:采用队列来存储单层的节点,然后通过删除队列的头结点操作,依次遍历每一层. 代码为: import java.util.ArrayList ...

  3. 剑指Offer 从上往下打印二叉树(dfs)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印.   思路: 用一个队列来辅助,先压入根节点,设置一个指针记录队列头位置,判断队头指针有没有孩子,有压入左右孩子,,,操作完一次,队头出 ...

  4. 用js刷剑指offer(从上到下打印二叉树)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 牛客网链接 js代码 /* function TreeNode(x) { this.val = x; this.left = null ...

  5. 剑指Offer-22.从上往下打印二叉树(C++/Java)

    题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 分析: 按层次打印二叉树的节点,重点就是我们在打印一层节点的时候,同时按顺序保存好当前节点的下一层节点,也就是左节点和右节点,当此层节点 ...

  6. 剑指offer--29.从上往下打印二叉树

    层序遍历,队列 ------------------------------------------------------------------------------------- 时间限制:1 ...

  7. 剑指offer23 从上往下打印二叉树

    没有把队列的头部弹出,出现内存错误:

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

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. ...

  9. 剑指offer:按之字形打印二叉树(栈|双向队列+中序遍历)

    1. 题目描述 /** 请实现一个函数按照之字形打印二叉树, 即第一行按照从左到右的顺序打印, 第二层按照从右至左的顺序打印, 第三行按照从左到右的顺序打印, 其他行以此类推. */ 2. 双向队列 ...

  10. 剑指Offer——按之字形顺序打印二叉树

    题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 分析: 我们都知道二叉树的层次遍历用的是队 ...

随机推荐

  1. 开源项目SMSS开源项目(三)——protobuf协议设计

    本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议.第二部分会给出smss项目的协议设计规范和源码讲解. 一.Protobuf使用基础 什么是protobuf pro ...

  2. 数据量不足,MedicalNet 如何助力医疗影像 AI 突破瓶颈?

    ​导读 |近日,云+社区技术沙龙“腾讯开源技术”圆满落幕.本次沙龙邀请了多位腾讯技术专家,深度揭秘了腾讯开源项目TencentOS tiny.TubeMQ.Kona JDK.TARS以及Medical ...

  3. python中各种文件打开模式

    在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...

  4. 通过VS2019使用Web部署发布.net core程序

    服务器:Windows Server2012R2 服务器已安装好IIS 需要启用Web Management Service  与 Web部署代理服务 服务器默认是没有Web部署代理服务的  需要安装 ...

  5. MongoDB 官方文档中的 aggregate 例子当中的 $sum: 1 , 这里的 1 起什么作用?

    按照 group 的条件, 满足一条就加1, db.getCollection('user_login_info').aggregate( [ {$project:{account_id:" ...

  6. 实验二:在Cisco Packet Tracer模拟器上进行Trunk+Access端口混合模式实验

    1.配置图 2.配置命令 Switch0的VLAN配置如下: 查看Switch0的vlan配置如下: Switch0的Trunk端口配置如下: Switch1的VLAN配置如下: 查看Switch1的 ...

  7. Qt Installer Framework翻译(7-2)

    包文件夹 安装程序包含的组件,要么是内嵌的,要么可以从远程存储库加载.在这两种情况下,都需要为组件使用一种安装程序可以读取的文件格式和结构. 包文件夹结构 将所有组件放在相同的根文件夹中,即包文件夹. ...

  8. vue3的打包及打包的坑

    1.vue3没有vue.config.js文件,在根目录下建一个vue.config.js文件 2.vue.config.js  3.vue3.3版本前的打包命令  vue3.3版本之后 我用3.3之 ...

  9. linux--->用户管理和sudo权限

    linux 用户 配置文件 linux主要通过用户配置文件来查看和修改用户信息 etc/passwd 第一个字段:用户名 第二个字段:密码标志 (表明这个用户有密码,密码放在etc/shadow文件) ...

  10. Web自动化测试项目(七)日志

    一.日志作用 调试程序 了解系统程序运行的情况,是否正常 系统程序运行故障分析与问题定位 用来做用户行为分析和数据统计 二.为项目添加日志 └── utils ├── log_utils.py └── ...