【笔试/面试】—— 二叉树的最远距离
问题定义
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两节点之间边的个数,写一个程序求一棵二叉树中相距最远的两个节点之间的距离。
分析
计算一个二叉树的最大距离有两个情况:
- 情况 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;
}
【笔试/面试】—— 二叉树的最远距离相关推荐
- leetcode 刷500道题,笔试/面试稳吗?谈谈算法的学习
来源公众号:苦逼的码农 作者:帅地 想要学习算法.应付笔试或者应付面试手撕算法题,相信大部分人都会去刷 Leetcode,有读者问?如果我在 leetcode 坚持刷它个 500 道题,以后笔试/面试 ...
- 程序员笔试面试最爱考察的算法,到底怎么搞定?
作者 | 黄小斜 责编 | 屠敏 本文思维导图 什么是算法 上回我们有一篇文章,讲述了作为一个新人程序员,如何学习数据结构这门课程,其实呢,数据结构和算法是息息相关的,为什么这么说呢,因为数据结构本身 ...
- 46家中外知名企业笔试面试题目
http://blog.sina.com.cn/s/blog_4897add3010009wj.html 微软 智力题 1.烧一根不均匀的绳子,从头烧到尾总共需要1个小时,问如何用烧绳子的方法来确 定 ...
- python笔试编程题_Python自动化测试笔试面试时常见的编程题
前言 随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力.因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点. 基本编码能力及思维逻辑 基本数据结构(顺序表.链表.队列.栈.二叉树 ...
- 最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题
最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过. ...
- 九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试六十题
九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的 i .每次从通里面 ...
- 最新校招笔试面试六十题
原文: 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试六十题(11.05) 链接:http://blog.csdn.net/v_july_v/article/details/11921021 分类 ...
- 腾讯 美团 百度 网易游戏 2015校园招聘南京笔试面试之总结分析
补充(20141106): 三方已经寄出,综合评价下自己的不足和OFFER分析. 网易游戏终面 10月28号,网易游戏定好了往返的飞机票让我去广州参加终面,事前我对技术准备还是挺充分的,可对网易游戏本 ...
- 转:九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)
分类: 05.MS 100' original 2012-09-13 12:38 108951人阅读 评论(346) 收藏 举报 目录(?)[+] 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试 ...
- 【C++/嵌入式笔试面试八股】大纲介绍
文章目录 C++嵌入式笔试面试集锦大纲介绍 〇.简历&面试 一.编程语言 01.汇编 02.C/C++ 03.Python 04.版本控制工具 二.计算机基础 01.计算机组成原理 02.操作 ...
最新文章
- DayDayUp:那些属于程序猿江湖的鄙视链(看完别笑^~^,哈哈,haha)
- [转]IaaS、PaaS、SaaS、CaaS、MaaS五者的区别
- 【二分】【最小生成树】公路修建问题(P2323)
- 如何手撸一个队列?队列详解和面试题汇总(含答案)
- 《MySQL必知必会》读书笔记_3
- 模拟电子技术不挂科学习笔记1(半导体基础、二极管)
- VS 2013 Chrome PPAPI 开发环境
- ❤️Spring注入集合❤️(建议收藏)
- 关于BASYS3给初学者的建议(有关引脚的书写
- 11款极酷Chrome浏览器插件推荐
- Docker从理论到实践(六)------搭建和使用本地私有Docker镜像仓库
- 晨风机器人回复词库_机器人自动回复问答
- 专业的自建邮件服务器,自己搭建邮件服务器有哪些软硬件需求??
- 1H413000工业机电工程安装技术—— 1H413020电气工程安装技术
- 四年前,我设计了一款纹胸小样儿……如图……
- Visual SourceSafe 2005介绍
- Heterogeneous Treatment Effect
- (转)TensorFlow--实现人脸识别实验精讲 (Face Recognition using Tensorflow)
- no diagrams overlap selections问题解决
- ASCII编码的介绍与分析
热门文章
- Spark实现WordCount案例
- 解决Caused by: GSSException: (Mechanism level: Failed to find any Kerberos tgt)
- python写透视挂_python opencv 透视变换
- Numpy——numpy属性
- Tensorflow精进之路(二):两层卷积神经网络模型训练MNIST
- opencv基础--特征提取与配准(SIFT系列)
- 【Tensorflow】相关面试题整理(转)
- OCR之Tesseract使用
- php ajax 搜索实例,PHP 实例 AJAX 实时搜索
- NetCore Get Parameter