二叉树中最远两个节点的距离
来源:互联网 发布:客餐厅装饰画淘宝网 编辑:程序博客网 时间:2024/05/21 10:21
计算一个二叉树的最大距离有两个情况:
情况1: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。
情况2: 路径不穿过根节点,而是左子树或右子树的最大距离路径,取其大者。
只需要计算这两个情况的路径距离,并取其大者,就是该二叉树的最大距离。
下面是实现代码:
struct node { node *pLeft; node *pRight; int nMaxLeft; int nMaxRight; }; int nMaxLen = 0; void FindMaxLen(node* root) { if(root==NULL) return; if(root->pLeft==NULL) root->nMaxLeft=0; if(root->pRight==NULL) root->pRight=0; if(root->pLeft!=NULL) { FindMaxLen(root->pLeft); } if(root->pRight!=NULL) { FindMaxLen(root->pRight); } if(root->pLeft!=NULL) //左子树最大距离{ int nTempMax=0; if(root->pLeft->nMaxLeft>root->pLeft->nMaxRight) nTempMax=root->pLeft->nMaxLeft; else nTempMax=root->pLeft->nMaxRight; root->nMaxLeft=nTempMax+1; } if(root->pRight!=NULL) //右子树最大距离{ int nTempMax=0; if(root->pRight->nMaxLeft>root->pRight->nMaxRight) nTempMax=root->pRight->nMaxLeft; else nTempMax=root->pRight->nMaxRight; root->nMaxRight=nTempMax+1; } if(root->nMaxLeft+root->nMaxRight>nMaxLen) //更新最大距离 nMaxLen=root->nMaxLeft+root->nMaxRight; }
1 0
- 求一颗二叉树中最远的两个节点的距离
- 求二叉树中最远的两个节点的距离
- 求二叉树中最远的两个节点的距离
- ~求二叉树中最远的两个节点的距离~
- 求二叉树中最远的两个节点的距离
- 求二叉树中两个节点最远的距离
- 二叉树中最远两个节点的距离
- 在二叉树中,距离最远的两个节点的距离
- 在二叉树中,找到距离最远的两个节点的距离
- 在二叉树中,找到距离最远的两个节点的距离
- Java实现:在二叉树中,求距离最远的两个节点的距离
- 求二叉树中最远两个节点距离
- 求二叉树中节点的最大距离 即二叉树中相距最远的两个节点之间的距离
- 二叉树的两个节点之间最远的距离
- 查找二叉树最远两个节点的距离
- 二叉树中相距最远的两个节点之间的距离
- 二叉树中相距最远的两个节点之间的距离
- 二叉树中相距最远的两个节点之间的距离
- xgboost WIN7 64的安装
- Android4.4.2 获取NTP时间,并设置系统时间
- Android_过度绘制优化
- SSM框架的配置文件
- wkhtmltox实现网页转换成图片或pdf
- 二叉树中最远两个节点的距离
- 算法概论 - 8.9
- WordPress固定链接设置完全指南
- 使用JDK自带工具jstat发现内存泄露问题
- 旋转的太极图
- Jmeter之JDBC Request使用方法(oracle)
- 在vspackage中使用outputwindow
- 9 gradle 之java插件的使用
- 给程序员的五点建议--如何成为编程高手并以此创业