问题定义

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

分析

计算一个二叉树的最大距离有两个情况:

  • 情况 A:路径经过左子树的最深节点,通过根节点,再到右子树的最深节点;
  • 情况 B:路径不穿过根节点,而是左子树(右子树为空)或右子树(左子树为空)的最大距离路径,取其大者;

只需计算这两个情况的路径距离,并取max,就是该二叉树的最大距离。

代码

struct Node
{char id;Node* lft;Node* rgt;int max_lft;int max_rgt;
};int max_dist;void FindMaxLen(Node* root)
{if (!root)return;if (!root->lft)root->max_lft = 0;if (!root->rgt)root->max_rgt = 0;if (root->lft){FindMaxLen(root->lft);}if (root->rgt){FindMaxLen(root->rgt);}if (root->lft){if (root->lft->max_lft > root->lft->max_rgt)++root->lft->max_lft;else root->lft->max_lft = root->lft->max_rgt+1;}if (root->rgt){if (root->rgt->max_lft > root->rgt->max_rgt)++root->rgt->max_lft;else root->rgt->max_lft = root->rgt->max_rgt+1;}if (root->max_lft+root->max_rgt > max_len)max_len = root->max_lft + root->max_rgt;
}

【笔试/面试】—— 二叉树的最远距离相关推荐

  1. leetcode 刷500道题,笔试/面试稳吗?谈谈算法的学习

    来源公众号:苦逼的码农 作者:帅地 想要学习算法.应付笔试或者应付面试手撕算法题,相信大部分人都会去刷 Leetcode,有读者问?如果我在 leetcode 坚持刷它个 500 道题,以后笔试/面试 ...

  2. 程序员笔试面试最爱考察的算法,到底怎么搞定?

    作者 | 黄小斜 责编 | 屠敏 本文思维导图 什么是算法 上回我们有一篇文章,讲述了作为一个新人程序员,如何学习数据结构这门课程,其实呢,数据结构和算法是息息相关的,为什么这么说呢,因为数据结构本身 ...

  3. 46家中外知名企业笔试面试题目

    http://blog.sina.com.cn/s/blog_4897add3010009wj.html 微软 智力题 1.烧一根不均匀的绳子,从头烧到尾总共需要1个小时,问如何用烧绳子的方法来确 定 ...

  4. python笔试编程题_Python自动化测试笔试面试时常见的编程题

    前言 随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力.因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点. 基本编码能力及思维逻辑 基本数据结构(顺序表.链表.队列.栈.二叉树 ...

  5. 最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题

    最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过. ...

  6. 九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试六十题

    九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面 ...

  7. 最新校招笔试面试六十题

    原文: 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试六十题(11.05) 链接:http://blog.csdn.net/v_july_v/article/details/11921021 分类 ...

  8. 腾讯 美团 百度 网易游戏 2015校园招聘南京笔试面试之总结分析

    补充(20141106): 三方已经寄出,综合评价下自己的不足和OFFER分析. 网易游戏终面 10月28号,网易游戏定好了往返的飞机票让我去广州参加终面,事前我对技术准备还是挺充分的,可对网易游戏本 ...

  9. 转:九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)

    分类: 05.MS 100' original 2012-09-13 12:38 108951人阅读 评论(346) 收藏 举报 目录(?)[+] 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试 ...

  10. 【C++/嵌入式笔试面试八股】大纲介绍

    文章目录 C++嵌入式笔试面试集锦大纲介绍 〇.简历&面试 一.编程语言 01.汇编 02.C/C++ 03.Python 04.版本控制工具 二.计算机基础 01.计算机组成原理 02.操作 ...

最新文章

  1. DayDayUp:那些属于程序猿江湖的鄙视链(看完别笑^~^,哈哈,haha)
  2. [转]IaaS、PaaS、SaaS、CaaS、MaaS五者的区别
  3. 【二分】【最小生成树】公路修建问题(P2323)
  4. 如何手撸一个队列?队列详解和面试题汇总(含答案)
  5. 《MySQL必知必会》读书笔记_3
  6. 模拟电子技术不挂科学习笔记1(半导体基础、二极管)
  7. VS 2013 Chrome PPAPI 开发环境
  8. ❤️Spring注入集合❤️(建议收藏)
  9. 关于BASYS3给初学者的建议(有关引脚的书写
  10. 11款极酷Chrome浏览器插件推荐
  11. Docker从理论到实践(六)------搭建和使用本地私有Docker镜像仓库
  12. 晨风机器人回复词库_机器人自动回复问答
  13. 专业的自建邮件服务器,自己搭建邮件服务器有哪些软硬件需求??
  14. 1H413000工业机电工程安装技术—— 1H413020电气工程安装技术
  15. 四年前,我设计了一款纹胸小样儿……如图……
  16. Visual SourceSafe 2005介绍
  17. Heterogeneous Treatment Effect
  18. (转)TensorFlow--实现人脸识别实验精讲 (Face Recognition using Tensorflow)
  19. no diagrams overlap selections问题解决
  20. ASCII编码的介绍与分析

热门文章

  1. Spark实现WordCount案例
  2. 解决Caused by: GSSException: (Mechanism level: Failed to find any Kerberos tgt)
  3. python写透视挂_python opencv 透视变换
  4. Numpy——numpy属性
  5. Tensorflow精进之路(二):两层卷积神经网络模型训练MNIST
  6. opencv基础--特征提取与配准(SIFT系列)
  7. 【Tensorflow】相关面试题整理(转)
  8. OCR之Tesseract使用
  9. php ajax 搜索实例,PHP 实例 AJAX 实时搜索
  10. NetCore Get Parameter