首页 > 试题广场 >

二叉树的深度

[编程题]二叉树的深度
  • 热度指数:383395 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。

数据范围:节点的数量满足 ,节点上的值满足
进阶:空间复杂度 ,时间复杂度

假如输入的用例为{1,2,3,4,5,#,6,#,#,7},那么如下图:

示例1

输入

{1,2,3,4,5,#,6,#,#,7}

输出

4
示例2

输入

{}

输出

0

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 牛客题解官
发表于 2020-06-01 11:06:59
精华题解 题目的主要信息: 给定一棵二叉树的根节点,求这棵树的最大深度 深度是指树的根节点到任一叶子节点路径上节点的数量 最大深度是所有叶子节点的深度的最大值 叶子节点是指没有子节点的节点 举一反三: 学习完本题的思路你可以解决如下题目: JZ82. 二叉树中和为某一值的路径(一) JZ28. 对称的二叉 展开全文
头像 LaN666
发表于 2021-06-22 23:17:26
精华题解 38、二叉树的深度 解题思路: 题目是 从根节点到叶节点的路径,所以就是求出二叉树的层数即可。 方法一:层次遍历 我们先来回顾一下二叉树的层次遍历,一般我们都是用队列去实现的。 步骤: 1、先创建一个队列,将根节点入队; 2、队列不为空,进入循环: 出队一个节点 将当前节点的左右节点入队(不为空时 展开全文
头像 江南好___
发表于 2021-06-22 21:33:10
精华题解 描述 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 示例 输入:{1,2,3,4,5,#,6,#,#,7} 返回值:4引言 求解二叉树相关的题目,一般都可以使用遍历(如层序遍历)或递归(自底向上递归)的方法解决。 展开全文
头像 NumPy
发表于 2021-06-22 19:21:22
精华题解 一、题目描述 JZ38二叉树的深度题目大意:给定一棵二叉树,求该数的高度 二、算法1(自底向上递归) 算法思路 1.总体思路:根据题意,树的深度是从根节点到叶子结点的所有路径中最长路径的长度,要到达叶子结点,要么走左子树要么走右子树,因此对于以某个结点为根节点构成的子树来说,它所表示的二叉树的深度就 展开全文
头像 FYZ~
发表于 2019-08-08 10:56:43
二叉树:二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。题目:求二叉树的深度,从根节点到字节点的最长路径。递归求法: public int TreeDepth(Tre 展开全文
头像 ZwZ呀咿呀咿哟
发表于 2020-02-06 11:52:24
看题解上没有介绍使用层次遍历计算二叉树的深度的思路,那我就介绍一下吧。思路: 借助队列,对二叉树进行层次遍历; 在层次遍历的过程中,每次当队列中某一层的节点出队完成后,高度+1; 关键点:判别队列中某一层节点出队完成的标准是什么? 在出队之前,此时队列中记录的只有某一层节点,所以队列的大小就是某一 展开全文
头像 一叶浮尘
发表于 2019-08-23 08:50:13
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 此题用递归的思想做就非常简单了。 public class Solution { public int TreeDepth(TreeNode root) { 展开全文
头像 数据结构和算法
发表于 2021-03-15 23:26:25
1,递归 这题最容易想到的就是递归,啥叫“递归”,也就是下面这张图开个玩笑,我们画个图来看下原理很简单,代码如下 public int TreeDepth(TreeNode root) { return root==null? 0 : Math.max(TreeDepth(root 展开全文
头像 ziffer
发表于 2021-07-21 16:23:07
public class Solution { public int TreeDepth(TreeNode root) { return root == null ? 0 : Math.max(TreeDepth(root.left), TreeDepth(root.righ 展开全文
头像 Ironxin
发表于 2020-03-10 11:42:10
思路1:递归写法构思:传入某节点,调用该方法,返回的应该是以传入节点为根节点的树的深度,而树的深度,肯定和左右子树深度有关,所以进入这个方法后,就包含了左右子树的深度(而要得到左右子树的深度,肯定又是以左右子节点为根节点,再次调用该方法深度获取的,因此此时进行递归),并且还有由一个左右深度比较的过程 展开全文
头像 牛客ID:923045198
发表于 2020-03-01 10:20:28
递归方法 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = No 展开全文
头像 白伟仝
发表于 2020-06-08 11:58:27
import java.util.*; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this 展开全文
头像 陌上锦衣卫
发表于 2020-05-04 22:38:27
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。class Solution {public: int TreeDepth(TreeNode* pRoot) { if(pRoot!=NULL) retur 展开全文
头像 加油做题
发表于 2022-06-12 22:17:29
int TreeDepth(struct TreeNode* pRoot ) { if(pRoot==NULL){ return 0; } int depth; int left_depth=TreeDepth(pRoot->left); 展开全文