iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么用C++求出二叉树的最大深度
  • 831
分享到

怎么用C++求出二叉树的最大深度

2023-06-20 16:06:26 831人浏览 薄情痞子
摘要

这篇文章主要介绍“怎么用c++求出二叉树的最大深度”,在日常操作中,相信很多人在怎么用C++求出二叉树的最大深度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++求出二叉树的最大深度”的疑惑有所帮助!

这篇文章主要介绍“怎么用c++求出二叉树的最大深度”,在日常操作中,相信很多人在怎么用C++求出二叉树的最大深度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++求出二叉树的最大深度”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

二叉树的最大深度

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Note: A leaf is a node with no children.

Example:

Given binary tree [3,9,20,null,null,15,7],

    3
/ \
9  20
/  \
15   7

return its depth = 3.

求二叉树的最大深度问题用到深度优先搜索 Depth First Search,递归的完美应用,跟求二叉树的最小深度问题原理相同,参见代码如下:

C++ 解法一:

class Solution {public:    int maxDepth(TreeNode* root) {        if (!root) return 0;        return 1 + max(maxDepth(root->left), maxDepth(root->right));    }};

Java 解法一:

public class Solution {    public int maxDepth(TreeNode root) {        return root == null ? 0 : (1 + Math.max(maxDepth(root.left), maxDepth(root.right)));    }}

我们也可以使用层序遍历二叉树,然后计数总层数,即为二叉树的最大深度,注意 while 循环中的 for 循环的写法有个 trick,一定要将 q.size() 放在初始化里,而不能放在判断停止的条件中,因为q的大小是随时变化的,所以放停止条件中会出错,参见代码如下:

C++ 解法二:

class Solution {public:    int maxDepth(TreeNode* root) {        if (!root) return 0;        int res = 0;        queue<TreeNode*> q{{root}};        while (!q.empty()) {            ++res;            for (int i = q.size(); i > 0; --i) {                TreeNode *t = q.front(); q.pop();                if (t->left) q.push(t->left);                if (t->right) q.push(t->right);            }        }        return res;    }};

Java 解法二:

public class Solution {    public int maxDepth(TreeNode root) {        if (root == null) return 0;        int res = 0;        Queue<TreeNode> q = new LinkedList<>();        q.offer(root);        while (!q.isEmpty()) {            ++res;            for (int i = q.size(); i > 0; --i) {                TreeNode t = q.poll();                if (t.left != null) q.offer(t.left);                if (t.right != null) q.offer(t.right);            }        }        return res;    }}

GitHub 同步地址:

https://github.com/grandyang/LeetCode/issues/104

类似题目:

Balanced Binary Tree

Minimum Depth of Binary Tree

Maximum Depth of N-ary Tree

参考资料:

Https://leetcode.com/problems/maximum-depth-of-binary-tree/

https://leetcode.com/problems/maximum-depth-of-binary-tree/discuss/34207/my-code-of-c-depth-first-search-and-breadth-first-search

到此,关于“怎么用C++求出二叉树的最大深度”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么用C++求出二叉树的最大深度

本文链接: https://www.lsjlt.com/news/298547.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用C++求出二叉树的最大深度
    这篇文章主要介绍“怎么用C++求出二叉树的最大深度”,在日常操作中,相信很多人在怎么用C++求出二叉树的最大深度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++求出二叉树的最大深度”的疑惑有所帮助!...
    99+
    2023-06-20
  • C++怎么求二叉树的最小深度
    本篇内容介绍了“C++怎么求二叉树的最小深度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!二叉树的最小深度Given a binary tr...
    99+
    2023-06-20
  • C++怎么实现二叉树的最大深度
    本文小编为大家详细介绍“C++怎么实现二叉树的最大深度”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++怎么实现二叉树的最大深度”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。二叉树的最大深度Example:G...
    99+
    2023-06-19
  • C++实现LeetCode(104.二叉树的最大深度)
    [LeetCode] 104. Maximum Depth of Binary Tree 二叉树的最大深度 Given a binary tree, find its maximum...
    99+
    2024-04-02
  • C++怎么实现二叉树的最小深度
    今天小编给大家分享一下C++怎么实现二叉树的最小深度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。二叉树的最小深度Examp...
    99+
    2023-06-19
  • C++怎么求二叉树的最大路径和
    本篇内容主要讲解“C++怎么求二叉树的最大路径和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么求二叉树的最大路径和”吧!求二叉树的最大路径和Given a non-empty...
    99+
    2023-06-20
  • python二叉树的最大深度该怎样理解
    这期内容当中小编将会给大家带来有关python二叉树的最大深度该怎样理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。二叉树的最大深度1 题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子...
    99+
    2023-06-19
  • C++实现LeetCode(111.二叉树的最小深度)
    [LeetCode] 111. Minimum Depth of Binary Tree 二叉树的最小深度 Given a binary tree, find its minimum...
    99+
    2024-04-02
  • Python怎么用递归实现求二叉树深度
    本篇内容介绍了“Python怎么用递归实现求二叉树深度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!其实就是求二叉树层级,比如一个单点就是一...
    99+
    2023-06-02
  • C++实现LeetCode(124.求二叉树的最大路径和)
    [LeetCode] 124. Binary Tree Maximum Path Sum 求二叉树的最大路径和 Given a non-empty binary ...
    99+
    2024-04-02
  • go语言算法题解二叉树的最小深度
    目录题目:说明:解法:题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 解法: func m...
    99+
    2024-04-02
  • 怎么利用go语言实现查找二叉树中的最大宽度
    这篇文章主要介绍“怎么利用go语言实现查找二叉树中的最大宽度”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用go语言实现查找二叉树中的最大宽度”文章能帮助大家解决问题。介绍这道题是这样的,有一...
    99+
    2023-06-30
  • C++怎么求解二叉树的下一个结点
    这篇文章主要讲解了“C++怎么求解二叉树的下一个结点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么求解二叉树的下一个结点”吧!题目描述给定一个二叉树其中的一个结点,请找出中序遍历顺...
    99+
    2023-06-29
  • C++AVLTree高度平衡的二叉搜索树深入分析
    目录一、AVL树的概念二、AVL树节点的定义三、AVL树的插入四、AVL树的旋转1.左单旋2.右单旋3.左右双旋4.右左双旋五、进行验证六、AVLTree的性能一、AVL树的概念 二...
    99+
    2023-03-08
    C++ AVLTree二叉搜索树 C++高度平衡二叉搜索树
  • 利用go语言实现查找二叉树中的最大宽度
    目录介绍流程代码二叉树结构体测试代码查找二叉树最大宽度的代码代码解读介绍 这道题是这样的,有一个二叉树,让求出这颗Bt树里面最大的宽度是有几个节点,同时还要求出最大宽度的这些节点在第...
    99+
    2024-04-02
  • C++ AVLTree高度平衡的二叉搜索树怎么实现
    这篇“C++ AVLTree高度平衡的二叉搜索树怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++&nb...
    99+
    2023-07-05
  • C++怎么实现二叉树的后序遍历
    这篇文章主要介绍“C++怎么实现二叉树的后序遍历”,在日常操作中,相信很多人在C++怎么实现二叉树的后序遍历问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现二叉树的后序遍历”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • Java怎么找二叉树的最近公共祖先
    本篇内容主要讲解“Java怎么找二叉树的最近公共祖先”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么找二叉树的最近公共祖先”吧!思路一:先假设这棵树是二叉搜索树首先我们补充说明一下什么...
    99+
    2023-06-30
  • 最小二叉树堆排序怎么利用java 实现
    这篇文章给大家介绍最小二叉树堆排序怎么利用java 实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。最小二叉堆定义: 二叉堆是完全二元树或者是近似完全二元树,最小二叉堆是父结点的键值总是小于或等于任何一个子...
    99+
    2023-05-31
    java ava
  • C++怎么实现二叉树的上下颠倒
    这篇文章主要讲解了“C++怎么实现二叉树的上下颠倒”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现二叉树的上下颠倒”吧!二叉树的上下颠倒这道题让我们把一棵二叉树上下颠倒一下,而且...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作