第11 题 求二叉树中节点的最大距离...

二叉树系列---求二叉树中两个节点之间的最大距离 题目求二叉树中两个节点之间的最大距离(节点之间的距离:这两个节点之间边的个数); 计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。 情况B: 路径不穿过根节点,而是左子树或右子树的最大距离路径,取其大者。 只需要计算这两个情况的路径距离,并取其大者,就是该二叉树的最大距离。 方法1求左子树到根的最大距离leftMaxDistance; 阅读详情
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,
我们姑且定义"距离"为两节点之间边的个数。
写一个程序,

求一棵二叉树中相距最远的两个节点之间的距离。


思路:

       要求相距最远的两个节点之间的距离,我们可以这样考虑:由于只有根节点和子节点之间有相连的边

那么,假设最后结果是A和B有最大距离,那么A的根的根...... 与 B的根的根...... 是同样的一个节点,设为C.

我们知道A、B节点必定是以C为根的左右子树的最大高度,否者,假设存在D到C的高度大于A,那么B、D

的距离才是最大距离。

     综上,只需求以每个节点为根的左右子树的高度 的最大值。

#include <iostream>
#include <queue>

using namespace std;

struct BNode
{
	int key;
	BNode *m_pl,*m_pr;
};

typedef BNode* T;
typedef queue<T> QET;
int MaxDepth;

int Depth(const BNode* head)
{
	if ( head == 0 )
		return 0;

	int l = Depth(head->m_pl) + 1;
	int r = Depth(head->m_pr) + 1;

	if (l + r > MaxDepth)
		MaxDepth = l + r;

	return (l > r) ? l : r;
}

int main()
{
	QET qe;
	BNode *head = 0;

	head = new BNode();
	cin >> head->key;
	head->m_pl = head->m_pr = 0;
	qe.push(head);

	while ( !qe.empty() )
	{
		BNode *temp = qe.front();
		qe.pop();
		cout << temp->key << "的左右子女的关键字,空用-1表示:" << endl;
		
		BNode *l = new BNode();
		BNode *r = new BNode();

		cin >> l->key >> r->key ;
		if (l->key == -1)
			delete l;
		else 
		{
			l->m_pl = l->m_pr = 0;
			temp->m_pl = l;
			qe.push(l);
		}
			
		if (r->key == -1)
			delete r;
		else
		{
			r->m_pl = r->m_pr = 0;
			temp->m_pr = r;
			qe.push(r);
		}
	}

	Depth(head);
	cout << MaxDepth - 2 << endl;
	return 0;
}


微软100题(11) 二叉树中节点的最大距离 题目: 求二叉树中节点的最大距离... 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离 我觉得相隔最远的 应该是左子树最深的 和 右子树最深的结点之间 所以转变为求左子树深度 和 右子树深度 最长距离为左右子树深度之和 int TreeDepth(Bina 阅读详情

相关推荐

求二叉树节点的最大距离

求二叉树节点的最大距离求二叉树节点的最大距离求二叉树节点的最大距离

11、求二叉树中节点的最大距离

题目: 如果我们把二叉树看成一个图, 父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。 参考:http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html 分析: 书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆

zwb8848happy的专栏 520

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 244

算法:求二叉树节点的最大距离(最大直径)

对于以某个节点为根节点的子树,有如下两种情况:对于以root为头结点的二叉树,它的最大距离的可能性有两类:经过root,不经过root当前节点不参与路径,此时左右子树中最大路径较大的那个就是当前节点不参与路径时的最长路径。当前节点参与路径,此时最大的路径应该是:左树高+右树高+1(1为当前节点)这时候对于某个节点而言,只要向左右孩子节点收集信息,就能够计算它的最大路径,需要的信息有:从而总的来说,每次我们都需要从root的子树中得到两个信息:最长路径、高度,因此我们定义一个辅助类Info: 而为了在根节点汇

OceanStar的博客 448

RandLA-Net复现SemanticKITTI和S3DIS数据集

RandLA-Net复现KITTI和室内数据集

weixin_48845174的博客 4123

双有源桥(DAB)进阶:EPS调制策略与Matlab/Simulink仿真实践

本文深入探讨了双有源桥(DAB)的扩展移相(EPS)调制策略及其在Matlab/Simulink中的仿真实践。通过分析EPS的两种黄金调制策略——回流功率消除和电流应力优化,结合实际工程案例,展示了如何提升DAB系统的效率和性能。文章还详细介绍了Simulink模型搭建要点和关键仿真结果,为工程师提供了实用的技术参考。

weixin_33734785的博客 485

【二叉树】求二叉树上节点间的最大距离

题目 从二叉树的节点A出发,可以向上或者向下走,但沿途的节点只能经过一次,当到达节点B时,路径上的节点数叫作A到B的距离。对于给定的一棵二叉树,求整棵树上节点间的最大距离。给定一个二叉树的头结点root,请返回最大距离。保证点数大于等于2小于等于500. 思路 如中节点4和节点2之间的距离为2,节点2和5之间的距离为3. 设二叉树的头节点为head,这棵树的节点间最大距离可从以下三种情况中...

gulaixiangjuejue的博客 920

由于找不到mfc110u.dll,无法继续执行代码,重新安装程序可能会解决此问题的 解决方案

本文主要介绍了由于找不到mfc110.dll,无法继续执行代码的解决方案,希望能对使用Windows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 5万+

求二叉树中,任意两个节点之间的距离最大值是多少

1)二叉树的动态规划DP递归套路,要熟练掌握,上面有系列文章,看它2个例子就明白了 2)二叉树的树形DP递归套路,往往要分析与x节点有关,还是与x节点无关,才能整理出信息来。 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

weixin_46838716的博客 2354

单光子雪崩二极管(SPAD):原理、极高增益机制与微光探测解析

本文系统阐述了单光子雪崩二极管(SPAD)的工作原理及其在弱光探测中的应用。SPAD通过工作在盖革模式下的碰撞离化效应实现单光子探测,其核心机理包括:1)采用p+-n-n+结构实现高电场分布;2)通过雪崩倍增过程获得10^6量级增益;3)采用主动/被动淬灭机制实现快速恢复。文章详细分析了SPAD的关键性能参数(如光子探测效率、暗计数率等)及其在量子通信、激光雷达等领域的应用优势,揭示了该器件在极微弱光信号探测中的独特价值。

Fun_LiDAR的博客 1047

【100%通过率】华为机试真题 Python 实现【对称美学】【2022.11 Q4 新题】

对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

MISAYAONE的博客 1万+

第11题:求二叉树中节点的最大距离

欢迎转载,转载请务必注明出处:http://blog.csdn.net/alading2009/article/details/44984331 第11题:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。 树的高度是一个重要信息,然后就可以祭出递归大法了。 代码 pac

围炉夜话 1478

实战指南:Qwen3-ASR-1.7B 语音识别

本文介绍了Qwen3-ASR语音识别模型的安装与使用。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1810

微软面试100题之11题:求二叉树中节点的最大距离

如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。

tongxinhaonan的专栏 1273

有效Dk值提取方法的仿真分析

通过本文的仿真对比分析,提取有效Dk值方面,TDR技术在一些固定的场景下,依然有其参考应用价值,而随着VNA功能的不断增强和高精度测量手段的不断更新,双端口Delta-L技术才是主流评估方法,而单端口Delta-L技术则可以作为其降本增效的方案补充。

一只豌豆象的博客 1827

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

微软面试100题之第11题 求二叉树中节点的最大距离

http://blog.csdn.net/v_JULY_v/article/details/6126406   第11题 ------------------------------------ 求二叉树中节点的最大距离...   如果我们把二叉树看成一个图,   父子节点之间的连线看成是双向的,   我们姑且定义"距离"为两节点之间边的个数。   写一个程序,   求一棵二叉树

miao6664659的专栏 712

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

面试100题:11.求二叉树中节点的最大距离

转载并参考July的博客http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html,万分感谢! 题目: 写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。 分析:把最深的左子树距离加上最

加油,码农! 628

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

微软算法100题11 求二叉树中两节点之间的最大距离

第11 题求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离 思路: 一棵树中节点的最大距离,对于根节点来说,可以看做是左子树的最大深度加右子树的最大深度在加上左右各一个深度 (leftDepth + rightDepth + 1 + 1),但...

weixin_30652491的博客 202

微软100题第11题(求二叉树中节点的最大距离)

1scala版本 package ms import scala.util.Random /** * 第11题(树) 求二叉树中节点的最大距离... 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。 * */ class RandomBinaryTree{ var r

mark's technic world 827

11、求二叉树中节点的最大距离...

第11 题求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。 /* 分析: 1、具有最大距离的两个节点必定是叶子节点,如果不是叶子节点

SunDancer 1580

Interview100-11 求二叉树中节点的最大距离

题目 如果我们将二叉树看成一个图,父子节点之间的连线看成双向的边,我们定义”距离“为两个节点之间边的个数。设计一个算法,求出一个二叉树中相距最远的两个节点之间的距离。 解法 思路:二叉树中两个结点之间的最大距离,是如下两种情况中的最大值,第一种为:根结点到叶子节点的深度最大值。第二种为两个叶子节点之间的距离最大值。因此计算出二叉树中所有节点间的距离,取最大值。 GET-MAX-DISTA...

Blossom 345

求二叉树节点间最大距离的问题-----C++实现

我们先来看下二叉树结点之间的距离的定义   所谓<二叉树结点之间的距离>就是两个结点之间的某一条路径上的结点个数。例如如下的一颗树: 结点<K,C>之间的距离:选取一条路径K->E->B->A->C,那么他们之间的距离就是5。 有了上面的作为背景,接下来看看一道具体的例题 从二叉树的节点 A 出发,可以向上或者向下走,但沿途的节点只能经过一次,当...

qq_44848423的博客 953

11.求二叉树中节点的最大距离

如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。   这里可以求节点的左右子树的高度,然后可以得到一该几点为根的最长路径。遍历书的每一个节点,并在遍历过程中用n记录最大值!   #include using namespace std; struc

游刃有余则成的专栏 440

二叉树节点间的最大距离问题

【问题描述】 从二叉树的节点 A 出发,可以向上或者向下走,但沿途的节点只能经过一次, 当到达节点 B 时,路径上的节点数叫作 A 到 B 的距离。 现在给出一棵二叉树,求整棵树上每对节点之间的最大距离。 【输入形式】 第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。 以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右...

echo_xiao9的博客 647

11. 求二叉树中节点的最大距离

如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。 HANDWRITING: int distance (node *root) { int lh, rh; if (root->m_pLeft == 0) lh = 0; else lh = distance

MasaWong的专栏 544
上一篇: 第10 题 翻转句子中单词的顺序。
下一篇: 第14 题: 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
Matrixlibing
博客等级 码龄14年 2粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值