二叉树的深度(剑指 Offer 55 - I)
树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(BFS);
- 常见的 DFS : 先序遍历、中序遍历、后序遍历;
- 常见的 BFS : 层序遍历(即按层遍历)。
求树的深度需要遍历树的所有节点,本文将介绍基于 后序遍历(DFS) 和 层序遍历(BFS) 的两种解法。
方法一:后序遍历(DFS)
树的后序遍历 / 深度优先搜索往往利用 递归 或 栈 实现,本文使用递归实现。
关键点: 此树的深度和其左(右)子树的深度之间的关系。显然,此树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 +1+1 。
算法解析:
- 终止条件: 当 root 为空,说明已越过叶节点,因此返回 深度 00 。
- 递推工作: 本质上是对树做后序遍历。
计算节点 root 的 左子树的深度 ,即调用 maxDepth(root.left);
计算节点 root 的 右子树的深度 ,即调用 maxDepth(root.right); - 返回值: 返回 此树的深度 ,即 max(maxDepth(root.left), maxDepth(root.right)) + 1。
'''
输入一棵二叉树,求该树的深度。
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
'''
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:def TreeDepth(self, pRoot):# write code hereif pRoot == None:return 0lDepth = self.TreeDepth(pRoot.left)rDepth = self.TreeDepth(pRoot.right)return max(lDepth,rDepth)+1
二叉树的深度(剑指 Offer 55 - I)相关推荐
- 【LeetCode】剑指 Offer 55 - I. 二叉树的深度
[LeetCode]剑指 Offer 55 - I. 二叉树的深度 文章目录 [LeetCode]剑指 Offer 55 - I. 二叉树的深度 一.后序遍历(DFS) 二.层序遍历 一.后序遍历(D ...
- 【LeetCode】剑指 Offer 55 - II. 平衡二叉树
[LeetCode]剑指 Offer 55 - II. 平衡二叉树 文章目录 [LeetCode]剑指 Offer 55 - II. 平衡二叉树 一.后序遍历 + 剪枝(从底至顶) 一.后序遍历 + ...
- leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer
题目难度: 中等 原题链接 今天继续更新剑指 offer 系列, 这道题相比昨天那道题多了个每层打印方向不同的需求, 聪明的你想到应该如何实现了吗? 老样子晚上 6 点 45 分准时更新公众号 每日精 ...
- JAVA实现重建二叉树(《剑指offer》)
最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...
- 剑指 Offer 55 - 2 平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树.如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树. 示例 1: 给定二叉树 [3,9,20,null,null,15,7] ...
- 剑指 Offer 55 - I. 二叉树的深度
题目描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 例如: 给定二叉树 [3,9,20,null,null,15 ...
- 【LeetCode笔记】剑指 Offer 55 - II. 平衡二叉树(递归、二叉树)
文章目录 题目描述 思路 && 代码 二刷 一脸懵逼,居然没写这道题的题解.. 题目描述 思路 && 代码 思路:平衡二叉树判断公式 = 左子树满足 + 右子树满足 + ...
- LeetCode Algorithm 剑指 Offer 55 - II. 平衡二叉树
55 - II. 平衡二叉树 Ideas 这题直接扣平衡二叉树的定义就可以了,需要写一个辅助函数用来计算二叉树的高度,然后计算根节点左右子树的高度差,满足深度相差不超过1,那么它就是一棵平衡二叉树. ...
- JAVA实现从上往下打印二叉树(《剑指offer》)
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. import java.util.ArrayList; import java.util.LinkedList;/** public ...
- java 重建二叉树_【剑指offer】 Java实现重建二叉树
/** * @Author: DaleyZou * @Description: 重建二叉树 * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. * 假设输入的前序遍历和中序遍历的结果中都不 ...
最新文章
- 多线程断点下载开发总结(二)- 多线程写文件
- (Java集合框架)Map集合
- 2019数据安装勾选_万能的XY数据标签插件,柱形图也可以呈现变化率
- ant design pro取消登录_JeecgBoot实战按需加载 Ant-Design-Vue和Icon
- 福利 | 全网疯传免费领,一整套算法课程,拿走不谢!
- MySQL常用命令大全
- Cisco路由器IOS映像恢复及升级方法
- Jetson AGX Xavier配置PyTorch与TorchVision流程
- Asp.Net Core 轻松学-玩转配置文件
- c++ hsv 红色范围_维生素C的定量测定—2,6二氯酚靛酚法
- 代码英雄:波澜壮阔的操作系统之战(音频+长文)
- eclipse中variable references non-existion resource可能原因及解决方案
- “语音识别”服务人类
- jQuery 异步和同步请求
- python源码包的安装和卸载
- 数据治理成功要素篇1:数据战略管理
- Zeloof 自制芯片工艺
- 程控增益放大器电路原理图
- 如何批量用扫描仪扫描照片_如何用手机扫描旧照片
- 一个女程序员的奋斗经历