二叉树的深度

测试实现二(二叉树的深度) 二叉树的深度实现代码:测试代码块:测试代码:测试结果: 实现代码: package com.bjsxt.test; import java.util.LinkedList; /** * 二叉树的深度 */ public class DepthOfBiTree { // 递归实现1 public int findDeep(Node root) { int deep = 0; if... 阅读详情

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

二叉树的节点定义如下:

typedef struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
int max(int a, int b)
{
	return a > b ? a : b;
}
</pre><pre name="code" class="cpp">
int high(BinaryTreeNode* r )
{
	if (r == NULL)
		return 0;
	return max(high(r->m_pLeft), high(r->m_pRight)) + 1;

}


题目:输入一颗二叉树的根节点 判断该树是不是平衡二叉树 如果某二叉树中任意结点的左右子树的深度相差不超过1 那么它就是一颗平衡二叉树

 


bool Isbalance(BinaryTreeNode *r)
{//遍历二叉树的同时检测二叉树是否是平衡二叉树
	if (r == NULL)
		return true;
	int left = high(r->m_pLeft);
	int right = high(r->m_pRight);
	if (abs(right - left) > 1)
		return false;
	return Isbalance(r->m_pLeft) && Isbalance(r->m_pRight);
}



这种方法中 一个结点会被重复遍历多次 因此时间效率不高

如果用后序遍历的方式遍历二叉树的每一个结点 在遍历到一个结点之前 就已经遍历了它的左右子树 只要在遍历每个结点时记录它的深度 就可以一边遍历一遍判断每个结点是不是平衡的

bool Isbalances(BinaryTreeNode *r,int *deep)
{
	if (r == NULL)
	{
		*deep = 0;
		return true;
	}
	int left = 0;
	int right = 0;
	if (Isbalances(r->m_pLeft, &left) && Isbalances(r->m_pRight, &right))
	{
		*deep = max(left, right) + 1;
		return true;
	}
	return false;
}


bool IsBalanceTree(BinaryTreeNode *root)
{
	int t = 0;
	return Isbalances(root, &t);
}



C++求二叉树深度 开发工具与关键技术: Visual Studio / C++ 作者:何文涛 撰写时间:2019-8-05 二叉树的创建以及简单的运用我上次以及发布过了,现在做的是求二叉树的数深度。 下面就举了了例子来演示求二叉树的算法: //二叉树节点 typedef struct BINARYNODE { char ch; struct BINARYNODE* lchild; struct BINARYNOD... 阅读详情

相关推荐

编程计算二叉树的深度

#include "stdio.h" #include "malloc.h" typedef struct BiTNode{     char data;   /*结点的数据域*/     struct BiTNode *lchild , *rchild;  /*指向左孩子和右孩子*/ } BiTNode , *BiTree; /*创建一棵二叉树*/ void CreatBiTree(BiTre...

zrh_优快云的博客 5830

判断二叉树的深度

显然,树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 +1 。 public int maxDepth(TreeNode root) { if(root==null){ return 0; } int left = maxDepth(root.left); int right = maxDepth(root.right); return Math.max(left,ri

qq_54494937的博客 3427

别再只盯着CXL协议了,聊聊CXL.mem里那个能动态调优内存性能的‘QoS遥测’到底怎么用

本文深入解析CXL.mem协议中的QoS遥测功能,探讨如何通过DevLoad指标动态调优内存性能。文章详细介绍了QoS遥测的核心机制、多QoS类别设备的实战配置,以及AI训练、金融交易和视频处理场景中的优化案例,帮助数据中心实现高效内存资源管理。

weixin_33725722的博客 436

计算二叉树的深度

[算法步骤] 如果是空树,递归结束,深度为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万+

统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定

本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。

e3f4g5的博客 640

OPC DCOM详细配置方法 - 不关防火墙不换登陆用户

1. 前言   OPC DCOM的设置是实现跨网络OPC通信的基础,现有的一些OPC DCOM配置教程虽然讲解了如何配置DCOM,但没有讲清楚为什么要这么做,而且各个教程涉及的配置方法也不尽相同。   为了彻底搞清楚OPC DCOM的配置过程,我重新做了两台机器的系统,一台是Windows 7 32位,一台是Windows 10 64位,并且重零开始完整的测试了正常运行OPC DCOM所需的最少的...

steventian72的博客 3万+

二叉树的深度——C++

概念:二叉树的深度是指树中结点的最大深度(通俗的说 ,从根节点到最底层的叶子结点的行数便是二叉树的深度)。 C++代码: #define _CRT_SECURE_NO_WARNINNGS #include<iostream> using namespace std; //二叉树结点 typedef struct BINARYTREENODE { char root; struct...

ling08140814的博客 2375

sap外币重估流程图_SAP 外币评估方法(Valuation Method,评估方法)

在FI-GL模块评估外币时(T-code:F.05),需要输入ValuationMethod。下面分解一下评估方法是如何定义的。IMG -> FI -> General LedgerAccounting ->Business Transactions ->Closing ->Valuating -> ForeignCurrency Valuation ->...

weixin_39640543的博客 2355

二叉树之二叉树的深度

二叉树之二叉树的深度

qq_43218521的博客 6186

NXP应用随记(八):S32K3XX的HSE学习记录(HSE\MU\UTEST\IVT\A,B SWAP)

HSE,即硬件安全引擎(Hardware Security Engine),是NXP S32K312微控制器(MCU)中的一个功能,它提供了一系列的安全特性,包括加密、安全启动和密钥存储等。这些功能旨在增强汽车电子系统的信息安全,符合ISO26262标准,达到ASIL D安全等级。具体来说,S32K312的HSE支持AES-128/192/256加密、RSA、ECC等加密算法,以及侧通道保护,确保了数据传输和存储的安全性。

梦想技术家 9744

6、高通8155座舱平台--摄像头系统

在项目中遇到过,很多从手机转过来的工程师,上来就按手机那套调Camera,结果发现根本跑不通——为什么?我踩过这个坑——一开始想靠软件打时间戳来对齐,结果发现两个sensor的曝光时间不一样,时间戳根本对不上。我记得第一次调AWB时,怎么调颜色都不对,后来发现是BLC的参数没配好——黑电平偏了,后面所有颜色校正都是错的。上层应用说「我要拍张照」,HAL把它翻译成「ISP你给我处理这帧数据,sensor你给我曝光一次」。8155上推荐用camx,它是高通新一代的Camera框架,性能更好,而且支持多路同步。

woailuojp的博客 59

二叉树的深度_二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。数据结构 TreeNode 的定义:牛客编程题高级数据结构格式说明_牛客博客​blog.nowcoder.net解题思路及代码方法一:分治法分治法的基本思想是:求一个规模为 n 的问题时,我们先求左边规模大约为 n/2 的问题,然后再求右边规模大约为 n/2 的问题,最后...

weixin_39798626的博客 1896

把 ABAP Smart Form 输出变成可直接下载的 PDF 二进制:OTF 到 XSTRING 的一条龙实践

SAP Smart Forms 生成 PDF 的实用方案:通过 OTF 格式转换实现高效输出。Smart Forms 本身不直接生成 PDF,而是输出 OTF 格式数据,需通过 CONVERT_OTF 函数转换。本文提供两种实现路径:传统的 Spool 方式和更优的直接获取 OTF 方式,后者避免了 Spool 的维护负担。核心代码演示了如何通过设置 GETOTF 参数获取 OTF 数据,并转换为 PDF 二进制流,适用于前端下载、接口传输等场景。同时介绍了 SSF_OPEN/SSF_CLOSE 方法用于批

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 675

二叉树的深度和平衡二叉树的深度

二叉树的深度 虽然前面已经做了二叉树的深度,仍然不牢固。 剑指offer里面用的是递归的方法。只要的思路就是,左子树和右子树的比较,大的一支加1作为深度。并不是此时右子树的深度就不加一,现在考虑的是该节点的深度,而不是左右子树的,左右子树只是helper。该节点可能也是其他结点的左右结点之一。 借鉴的一个大神的图,很清晰: 也是相当于后序遍历。 def maxdepth(root): if not root: return 0 depthleft = maxdepth(root.left) de

RUN 1800

华为OD机试新系统真题 【查找最佳充电策略】

华为OD机试 新系统真题【查找最佳充电策略】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找最佳充电策略】多语言题解。

qq_45776114的博客 431

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

二叉树(六):二叉树的最大深度与最小深度

一、二叉树的最大深度 二叉树的最大深度 二叉树的最大深度可以通过递归法,层次遍历和深度优先遍历实现,但是最简单最容易的就是递归法。 1、递归法 1)确定递归三要素 递归函数的返回值和参数:返回值为当前节点的最大深度,参数为当前节点 递归函数的单层逻辑:当前节点的最大深度 = 1 + 左子树或右子树的最大深度 递归函数的终止条件:当前节点为空时,当前节点最大深度为0 2)递归方法代码 class Solution { public: //递归参数及返回值 int maxDepth(Tre

qq_42138662的博客 9093

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

二叉树 | 二叉树的深度

文章目录问题:二叉树的最大深度解题思路C++代码 问题:二叉树的最大深度 问题链接 解题思路 采用递归的思路,如果root为NULL,返回0,否则返回1+max{左子树深度,右子树深度} C++代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef...

逐梦者 852

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

二叉树的深度的深度计算与完全二叉树、满二叉树概念

二叉树的深度计算 1、一颗树只有一个节点,它的深度是1; 2、二叉树的根节点只有左子树而没有右子树,那么可以判断,二叉树的深度应该是其左子树的深度加1; 3、二叉树的根节点只有右子树而没有左子树,那么可以判断,那么二叉树的深度应该是其右树的深度加1; 4、二叉树的根节点既有右子树又有左子树,那么可以判断,那么二叉树的深度应该是其左右子树的深度较大值加1。 int TreeDeep(struct n...

zqc的博客 5552

求二叉树深度以及寻找二叉树中某一节点值

size_t BTreeDepth(BTNode* root) BTNode* BTreeFind(BTNode* root, BTDataType x) 求二叉树的深度依然用的是二叉树递归的特性。二叉树的深度就是你根节点的这一层加上他左孩子或者右孩子中深度大的哪一个,同样这也能被划分为子问题。 size_t BTreeDepth(BTNode* root) { if (root == NULL) return 0; if (BTreeDepth(root-&gt;_left) &gt;

Hanani_Jia的博客 5022

二叉树深度计算

问题描述 https://oj.leetcode.com/problems/maximum-depth-of-binary-tree/点击打开链接 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the r

ych_ding的专栏 2万+

求二叉树的深度

问题描述 采用先序法建立一棵二叉树,设计求该二叉树的深度,二叉树的数据域类型为字符型,扩展二叉树的叶子结点用‘#’表示,要求可以求多棵二叉树的深度,当二叉树的深度为0时程序结束。 输入描述 循环输入多棵扩展二叉树的先序遍历序列,每棵树占一行,以回车结束,每棵二叉树中结点之间以空格隔开 输出描述 输出各二叉树的深度,每次输出后面都换行 输入样例 A B # # C D # E # F # # G H...

lfanyize的博客 1027
上一篇: 数字在排序数组中出现的次数
下一篇: 翻转单词顺序VS左旋转字符串
Fivesplus
博客等级 码龄12年 1粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值