二叉树中任意两个节点间的最大距离
来源:互联网 发布:linux 挂载有数据硬盘 编辑:程序博客网 时间:2024/06/05 07:36
求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,优化时间空间复杂度。
两种情况:
情况A: 左子树的最大深度,通过根节点,右子树的最大深度
情况B: 不穿过根节点,而是左子树或右子树的最大距离路径
三者比较,取最大的
- void FindMaxDis(BSTreeNode *pNode, int &deepth, int &maxdis)
- {
- if (pNode==NULL)
- {
- deepth=0;maxdis=0;
- return;
- }
- int l_deepth=0,r_deepth=0;
- int l_maxdis=0,r_maxdis=0;
- if (pNode->m_pleft)
- FindMaxDis(pNode->m_pleft,l_deepth,l_maxdis);
- if (pNode->m_pright)
- FindMaxDis(pNode->m_pright,r_deepth,r_maxdis);
- deepth = (l_deepth > r_deepth ? l_deepth : r_deepth) + 1;
- maxdis = l_maxdis > r_maxdis ? l_maxdis : r_maxdis ;
- maxdis = (l_deepth+r_deepth) > maxdis ? (l_deepth+r_deepth) : maxdis;
- }
- int FindMaxDis(BSTreeNode *pNode)
- {
- int deepth, maxdis;
- FindMaxDis(pNode,deepth,maxdis);
- return maxdis;
- }
原文来自:http://blog.csdn.net/seasky11/article/details/12129165
0 0
- 二叉树中任意两个节点间的最大距离
- 二叉树中任意两个节点间的最大距离
- 二叉树中任意两个节点之间的最大距离
- 39.二叉树中任意两个节点间的最大距离
- 求一个二叉树中任意两个节点间的最大距离
- 【每日面试题】求一个二叉树中任意两个节点间的最大距离
- 求一个二叉树中任意两个节点间的最大距离
- 求一个二叉树中任意两个节点间的最大距离
- 二叉树中任意两个节点间的距离 源码
- 任意一棵二叉树中最大距离的两个节点【算法】
- 微软等数据结构+算法面试100题(38)-- 二叉树中任意两个节点间的最大距离
- 二叉树的任意两节点间的最大距离
- 每天学习一算法系列(34)(求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数)
- 求二叉树中两个节点的最大距离
- 算法:求二叉树中两个节点的最大距离
- 求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,
- 【IT笔试面试题整理】 二叉树任意两个节点间最大距离
- 求二叉树中节点的最大距离 即二叉树中相距最远的两个节点之间的距离
- [nginx] 对UA为空的请求返回403
- 用GLSL写一个8角花花
- memset函数的正确打开方式
- OpenCV入门之:Mat
- 【hadoop】 3006-hadoop对象序列化排序
- 二叉树中任意两个节点间的最大距离
- poj 3970 Party 最小公倍数
- css浮动
- Linux下的重要目录
- Git tips
- 4月3日毕设日记
- light oj 1067 Combinations (组合数的lucas定理)
- 字符转换
- 【hadoop】 3007-hadoop的提交job的源码分析