二元树的深度

【转】http://zhedahht.blog.163.com/blog/static/25411174200732975328975/

 

题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

例如:输入二元树:

                                            10
                                          /     \
                                        6        14
                                      /         /   \
                                    4         12     16

输出该树的深度3。

二元树的结点定义如下:

struct SBinaryTreeNode // a node of the binary tree
{
      int               m_nValue; // value of node
      SBinaryTreeNode  *m_pLeft;  // left child of node
      SBinaryTreeNode  *m_pRight; // right child of node
};

分析:这道题本质上还是考查二元树的遍历。

题目给出了一种树的深度的定义。当然,我们可以按照这种定义去得到树的所有路径,也就能得到最长路径以及它的长度。只是这种思路用来写程序有点麻烦。

我们还可以从另外一个角度来理解树的深度。如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1。如果既有右子树又有左子树呢?那该树的深度就是其左、右子树深度的较大值再加1。

上面的这个思路用递归的方法很容易实现,只需要对遍历的代码稍作修改即可。参考代码如下:

///////////////////////////////////////////////////////////////////////
// Get depth of a binary tree
// Input: pTreeNode - the head of a binary tree
// Output: the depth of a binary tree
///////////////////////////////////////////////////////////////////////
int TreeDepth(SBinaryTreeNode *pTreeNode)
{
      // the depth of a empty tree is 0
      if(!pTreeNode)
            return 0;

      // the depth of left sub-tree
      int nLeft = TreeDepth(pTreeNode->m_pLeft);
      // the depth of right sub-tree
      int nRight = TreeDepth(pTreeNode->m_pRight);

      // depth is the binary tree
      return (nLeft > nRight) ? (nLeft + 1) : (nRight + 1);
}

频谱分析常见坑:STM32的ADC采样+FFT处理时如何避免这5个错误 本文深入剖析了在STM32平台上进行ADC采样与FFT频谱分析时,工程师最常遇到的五个关键错误与性能陷阱。内容涵盖从采样频率设置、频谱泄露处理、ADC配置优化,到谐波识别校准及系统实时性设计,提供了详尽的避坑指南与实战调优策略,旨在帮助开发者构建稳定、精确的嵌入式频谱分析或波形识别系统。 阅读详情

相关推荐

从仿真到实践:两级直接耦合放大电路的静态工作点协同调试指南

本文详细解析了两级直接耦合放大电路的静态工作点协同调试方法,从仿真到实践提供系统指南。重点介绍了Rc2电阻调整技巧、集电极电位测量方法及常见问题排查,帮助工程师解决各级静态工作点相互影响的难题,提升模拟电路设计效率。

weixin_29189373的博客 124

计算二叉树的深度

[算法步骤] 如果是空树,递归结束,深度为0;否则执行一下操作 递归计算左子树的深度计为m; 递归计算右子树的深度计为n; 如果m大于n,二叉树的深度为m+1,否则为n+1; [算法描述] int Depth(BiTree T) { int m, n; if (T == NULL) return 0; //如果是空树,深度为0,递归结束 else { m = Depth(T->lchild); //递归计算左子树的深度记为m

qq_47142993的博客 5万+

使用BK3432芯片进行蓝牙开发的详细指南:编程手册与实际应用

BK3432是一款蓝牙4.2双模式芯片,支持蓝牙低功耗(BLE)和经典蓝牙(BR/EDR)模式。它集成了高性能的RF收发器、基带处理器、ARM9E内核、丰富的功能外设单元,并支持BLE应用的可编程协议和概要文件。蓝牙版本:4.2数据速率:最高支持2Mbps内核:ARM9ERF收发器:高性能、低功耗外设单元:包括UART、SPI、I2C、GPIO等功耗:超低功耗设计,适合电池供电的应用。

m0_57781768的博客 4448

计算二叉树深度算法(递归、非递归)入门详解

二叉树在应用时,经常需要知道二叉树的深度。二叉树的深度就是二叉树的层数,即从树根算起,到最底下一层的层数是多少,即二叉树中结点的最大层次值。 本文给出了计算二叉树深度的算法,包括递归算法和非递归算法。......

sunnyoldboy博客 3万+

高速特征金字塔多角度旋转模板匹配(工业零部件缺陷检测C++ Opencv版)

博主在性能较好的笔记本上测试算法全部执行效果大约为45ms,在一般配置的笔记本上博主在性能较好的笔记本上测试算法全部执行效果大约为130ms。下图即为实际检测效果。本文最后附有完整代码:Qt版和MFC版本(可直接运行)。...

认真努力,做一只会飞的毛毛虫。 5547

Spring AI Alibaba实战训练营-14基于A2A协议智能体应用开发指南

本文介绍了基于A2A协议的智能体应用开发流程,主要包括客户端和服务端两个模块的实现。关键技术包括A2A通信协议、Nacos服务发现、Spring AI Alibaba框架和DashScope通义千问API。开发步骤涵盖环境准备(JDK17、Maven、Nacos)、项目创建、依赖配置(重点引入spring-ai-alibaba相关组件)以及Nacos和DashScope的核心配置。整个系统架构采用客户端通过Nacos发现服务端Agent,再调用阿里云AI服务的模式,实现了AI能力的解耦与复用。

program哲学 506

【代码+注释】求二叉树的深度【超详细】递归+非递归实现

编写算法求出二叉树的深度(层数) 二叉树的深度是指从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。本文将用两种方式求出二叉树的深度 第一种:无可置疑是递归   核心代码块: /*求二叉树的深度 ,递归方式*/ int getDepth(BiTreeNode *root) { int left, right; if (root == NULL) //递归出口 return 0; else {

chaim16的博客 2万+

Cesium 相机操作

Cesium 提供了三种方式对相机的位置进行摆放。

虎康的博客 2590

二叉树-----求深度

1.递归方法:分别计算出左子树、右子树的深度,最后取较大者+1即是二叉树深度。 typedef struct BinaryTree { int data; struct BinaryTree *Left; struct BinaryTree *Right; struct BinaryTree *Parent; }Node; //递归求二叉树深度 int PostTreeDepth(B...

weixin_39916039的博客 9461

【QT开发教程】QMatrix4x4类详解及实战应用:Qt中的4x4矩阵变换

在计算机图形学和三维图形应用中,矩阵变换是一个核心概念。Qt框架提供了QMatrix4x4类,用于处理4x4矩阵变换,帮助开发者在三维空间中进行复杂的几何计算。本文将深入探讨QMatrix4x4的功能及其在Qt应用中的实际应用。

科技改变人类,技术成就未来 722

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1790

LeetCode三种方法求二叉树深度(C++代码简单易懂)

题目描述 在线提交地址:点击跳转 方法一:递归 int maxDepth(TreeNode* root) { if(root == NULL) return 0; int leftDepth = maxDepth(root->left) + 1; int rightDepth = maxDepth(root->right) + ...

长期更新自学笔记 2631

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

输入一棵二元树的根结点,求该树的深度

/* copyright@nciaebupt 转载请注明出处 题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的 结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树: 10

nciaebupt 1940

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

求二元树的深度

题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树:                                             10                                           /     \

tanyujing的专栏 1968

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

52 二元树的深度

/* 52.二元树的深度。 题目:输入一棵二元树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、 叶结点)形成树的一条路径,最长路径的长度为 树的深度。 例如:输入二元树: 10 / \ 6 14 / / \ 4 12 16 输出该树的深度 3。 */ #include #include #include using na

小人物的草稿本 644

52.二元树的深度(树)。

52.二元树的深度(树)。 题目:输入一棵二元树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树:                                             10                                           /     /

lihappy999的专栏 1794

二元树的深度(树)

二元树的深度(树) 题目:输入一棵二元树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树:                                             10                                           /     /        

luyuncsd123的专栏 955

【编程题目】二元树的深度

52.二元树的深度(树)。题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树: 10/ \6 14/ / \4 12 16输出该树的深度 3。二元树的结点定义如下:struct SBinaryTreeNode // a node of th...

weixin_30585437的博客 75

第五十二题(二元树的深度)

52.二元树的深度。 题目:输入一棵二元树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为 树的深度。 例如:输入二元树: 10 / \ 6 14 / / \ 4 12 16 输出该树的深度3。 namespace MS100P_52 { struct SBinaryTreeNode // a nod

592
上一篇: 调整数组顺序使奇数位于偶数前面
下一篇: 和为n连续正数序列
caoruntaogmail
博客等级 码龄18年 3粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值