文章前半部分能懂,可是后面的Milo不是很理解,可能有待以后学习.....

微软面试题之一,难度系数中,题目描述如下:

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

如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,

我们姑且定义"距离"为两节点之间边的个数。

写一个程序,

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

逻辑分析:

1、看到这道题的时候,很容易产生一种错觉,这题不就是求二叉树高度吗。。。显然,出题人不是小白,所以这里面一定有文章,继而注意到“双向”,玄机也正在此处。两张图说明一切,不解释。

2、题意清楚了,下一步就是分析如何去做,我们都知道,但凡是树的题目,一般都要考虑递归解。而针对这道题,我们通过分析可以得到几个比较显眼的结论:最长的路径一定包含叶子;最长的路径有两种情况,含有根节点,从左子树最深节点,到右子树最深节点,或者是不含根节点,而是左子树或者右子树的最长路径,递归而下,也就是上图的A,B。

3、总结上述说法,即是相距最远的两个节点,一定是两个叶子节点,或者一个叶子节点到根节点。对于任意一个节点࿰

c++实现二叉树中节点的最大距离 - c++语言程序开发技术文章,c++实现二叉树中节点的最大距离...相关推荐

  1. DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc

    单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...

  2. 解决小程序开发:未找到 app.json 中的定义的 pages “pages/index/index“ 对应的 WXML 文件

    解决小程序开发:未找到 app.json 中的定义的 pages "pages/index/index" 对应的 WXML 文件 (亲测,以解决)如果节约了你的宝贵时间,辛苦点个赞 ...

  3. c语言程序中的基本功能,c语言程序中的基本功能模块为什么?

    c语言程序中的基本功能模块为"函数".一个C语言程序可以由一个主函数和若干个函数构成:一个大的应用程序一般应该分为多个程序模块,每一个模块用来实现一个功能,而模块的功能是由函数完成 ...

  4. 分段线性插值c语言程序_【短道速滑】OpenCV中cvResize函数使用双线性插值缩小图像长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。...

    点击上方↑↑↑"OpenCV学堂"关注我 作者网名:laviewpbt 是图像处理,算法实现与加速优化方面的大神!其开发的imageshop软件大小只有1MB,却实现了非常丰富与复 ...

  5. PC软件开发技术之一:在WinCC中通过VBS操作SQL Server2005

    在项目中需要在一定条件满足时,保存一些数据到数据库中,并可根据条件查询.考虑到WinCC6.2以后采用的就是SQL Server2005数据库,所以直接利用该数据库即可,通过SQL Server Ma ...

  6. c语言在中职的作用,C语言程序下的中职教学论文

    一.树立学生良好的学习信心 在日常的中职计算机教育教学中,应当重视学生对教学内容的看法,大多数学生认为C语言学习相对较为困难,在日常的中职计算机学习中,学生某种程度上缺乏应有的信心以及勇气,而尽管有的 ...

  7. pycharm项目中如何安装包_如何将Thymeleaf技术集成到SpringBoot项目中

    给天气预报一个"面子" 截至目前,不仅有了天气预报的API接口,也有了数据的缓存方案.现在,就要进行天气预报服务的实现,也就是说,这里需要一个面向用户的应用.这个应用应该拥有友好的 ...

  8. 如何在 VS Code 中编写、运行C语言程序 教程

    本篇目录 前言 1.下载.安装VS Code 2.安装VS code中2个插件 3.下载minGW64 4.配置系统的环境变量 5.C语言配置 6.编写一个测试程序 7.可能存在的问题 总结 前言 折 ...

  9. 计算机技术在x中的应用浅论,浅议网络技术在计算机专业教学中的应用

    [摘 要]随着社会经济的发展,计算机专业人才是社会需求的一个重要缺口.为社会培养专业性的人才是计算机专业教学的主要任务.认真研究网络教学在计算机专业教学中的应用,能够帮助学校更好的培养专业人才.本文分 ...

最新文章

  1. boost::callable_traits是否为is_volatile_member的测试程序
  2. SQL(八)- python执行SQL语句
  3. 动态规划 - Floyd算法求最短路径 - (Matlab建模)
  4. LOCK - 明确地锁定一个表
  5. Python面向对象中的“私有化”
  6. 关于Unity中DOTween插件的使用(专题一)
  7. 计算机桌面如何分区,学会电脑桌面整理分区,提高工作效率
  8. 25本最佳个人理财书籍
  9. viper4android fx 驱动,ViPER4Android FX 音效驱动社区版安
  10. vue处理PDF文档流数据并实现PDF的预览以及打印功能以及处理PDF打印乱码问题
  11. git基于master创建新分支
  12. 关于匿名者组织(Anonymous),你都知道哪些?
  13. Http请求体被转义
  14. 美团的战略、战术和能力圈 附下载地址
  15. JS addEventListener()方法
  16. 一元多项式式计算器(哈工大数据结构实验)
  17. Python实验报告一 python基础试题练习
  18. SeismicPro地震剖面显示程序
  19. 网络游戏服务器修改时间,如何修改游戏服务器时间
  20. docker :gitlab Uploading artifacts to coordinator... too large archive should fail job

热门文章

  1. [linux学习](linuxprobe课程)九 使用ssh服务管理远程主机
  2. 白板上的记号笔字迹如何去除?
  3. 判断当前设备是否为移动端/手机/IOS
  4. 去掉Sublime text 3中的框框
  5. java面试笔记二:java的面向对象
  6. 广东高中生多少人_18岁中国小伙单场70分,号称广东最强高中生
  7. python校园新生报到系统毕业设计开题报告
  8. 辗转相除法求最大公约数(Python)
  9. 有关Java的基础知识2020/11/25
  10. Bugku Web eval