给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

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

返回其自底向上的层次遍历为:

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

解法:

使用递归遍历二叉树框架的基本方法,同时添加 list 、 depth 两个参数实现,depth记录层级,list为结果数组

PHP

/*** Definition for a binary tree node.* class TreeNode {*     public $val = null;*     public $left = null;*     public $right = null;*     function __construct($value) { $this->val = $value; }* }*/
class Solution {/*** @param TreeNode $root* @return Integer[][]*/function levelOrderBottom($root){$list = [];$this->recu($root, 0, $list);return array_reverse($list);}function dfs($root, $depth, &$list){if ($root == null) {return;}if (empty($list[$depth])) {$list[$depth] = [];}array_push($list[$depth], $root->val);$this->recu($root->left, $depth + 1, $list);$this->recu($root->right, $depth + 1, $list);}
}

GO

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func levelOrderBottom(root *TreeNode) [][]int {var list [][]intdfs(root, 0, &list)for i, j := 0, len(list) - 1; i < j; i, j = i + 1, j - 1 {list[i], list[j] = list[j], list[i]}return list
}func dfs(root *TreeNode, depth int, list *[][]int) {if root == nil {return}if depth == len(*list) {*list = append(*list, []int{root.Val})} else {(*list)[depth] = append((*list)[depth], root.Val)}dfs(root.Left, depth + 1, list)dfs(root.Right, depth + 1, list)
}

二叉树的层次遍历 II - LeetCode相关推荐

  1. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  2. 【每日一算法】二叉树的层次遍历 II

    每日一算法-二叉树的层次遍历 II 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,n ...

  3. 二叉树层次遍历c语言_[LeetCode] 107. 二叉树的层次遍历 II

    题目链接 : https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/ 题目描述: 给定一个二叉树,返回其节点值自底 ...

  4. LeetCode 107. 二叉树的层次遍历 II(队列)

    1. 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 ...

  5. leetcode 二叉树的层次遍历 II(Binary Tree Level Order Traversal II)

    目录 题目描述: 示例: 解法: 题目描述: 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例: 给定二叉树 [3,9,20,null ...

  6. LeetCode(107)——二叉树的层次遍历 II(JavaScript)

    给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 返回其自底向上的层次 ...

  7. Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现

    解题思路: 使用队列实现二叉树的层序遍历,因为题目中要求每一层的val存储在一个vector中,所以在内循环中,还需要一个队列,用以存储更新每一层的节点. 在最后,需要将得到的res数组逆序. /** ...

  8. leetcode 107. 二叉树的层次遍历 II(维护两个队列,通过异或运算切换)

    题目 思路 一个比较啰嗦的解法 维护两个queue,当前队列节点的孩子,都放进另外一个队列里去. 树每切换一层,就切换一次队列,并且把新队列的值全部存起来. 整体上来看,是自顶向下遍历,最后翻转整个l ...

  9. 2020_9_6 每日一题 二叉树的层次遍历 II

    给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 ...

最新文章

  1. CUDA学习(七十一)
  2. WinAPI: GetLocalTime、SetLocalTime、SetSystemTime - 获取与设置系统时间
  3. 利用node、express初始化项目
  4. html空格代码_编写灵活、稳定、高质量的CSS代码的规范(推荐收藏)
  5. Java instanceof 关键字【复习】
  6. 【三分钟刷一题力扣】移除元素
  7. leetcode1328. 破坏回文串
  8. Linux IO控制命令生成
  9. 【HDOJ 2020.09.29】一些语法水题ByVJ
  10. 陈纪修老师《数学分析》 第12章:多元函数微分学 笔记
  11. 在excel上画交换机面板_如何在Excel中创建面板图
  12. 黑苹果内置硬盘识别成外置硬盘_空间大?安全更重要,麦沃 K35274D硬盘阵列盒使用体验--数据无价...
  13. Android edittext 属性inputtype
  14. Lamda表达式-入门篇
  15. 在电脑上构建自我意识
  16. vue父子传值与非父子传值
  17. 计算机内存外存的区别
  18. 华为路由协议ospf,域内路由,域间路由,域外路由
  19. 编写python程序、计算账户余额_《计算机科学丛书PYTHON程序设计(原书第2版)/(美])凯.S.霍斯特曼》【价格 目录 书评 正版】_中国图书网...
  20. EasyRecovery15Mac全面好用的苹果电脑数据恢复app

热门文章

  1. 手机端Alook浏览器手动抓取京东Cookie教程
  2. Redis数据库及五种数据类型的常用命令详解
  3. 人工神经网络的训练步骤,神经网络训练过程图解
  4. GitHub圣诞最火神器:“时光穿梭机”一键实现变老变年轻!
  5. Git - 时光机穿梭
  6. Python合成音视频(分别使用ffmpeg和moviepy)
  7. How to Install Nvidia Kernel Module Cuda and Pyrit in Kali Linux
  8. 阿里企业邮箱的smtp
  9. 太阳照常升起(C大调)
  10. 拉普拉斯矩阵(Laplacian matrix)的求解