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

来源:互联网 发布:三个数据库应用系统 编辑:程序博客网 时间:2024/06/06 08:37

本题来说http://blog.csdn.net/v_JULY_v/article/details/6057286 ,中的第十题。

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

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

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


本文的思路:



cur 记录当前的大小

如果是左子树为空,cur初始化为-1,否则初始化为0

然后采取中序变量的方法。

每个节点遍历的时候会+1, 但是这个节点如果是叶子节点则-1.

代码如下

#include<iostream>using namespace std;int maxDis = 0;int cur = 0;struct BTree{    int data;BTree *pLeft;BTree *pRight;};void  middleOrder(BTree *p){     if(NULL != p) {    middleOrder(p->pLeft);cur++;if (p->pLeft == NULL && p->pRight == NULL ){    if ( maxDis < cur )     maxDis = cur;    cur--;}cout <<"cur"<<cur<<" data"<<p->data<<endl;middleOrder(p->pRight);}}int main(){   BTree a[8];      a[0].pLeft = &a[1];   a[0].pRight = &a[4];   a[0].data = 0;   a[1].pLeft = &a[2];   a[1].pRight = &a[3];   a[1].data = 1;   a[2].pLeft = NULL;   a[2].pRight = NULL;   a[2].data = 2;   a[3].pLeft = NULL;   a[3].pRight = NULL;   a[3].data = 3;   a[4].pLeft = &a[5];   a[4].pRight = &a[6];   a[4].data = 4;   a[5].pLeft = NULL;   a[5].pRight = NULL;   a[5].data = 5;   a[6].pLeft = NULL;   a[6].pRight = &a[7];   a[6].data = 6;   a[7].pLeft = NULL;   a[7].pRight = NULL;   a[7].data = 7;      if (NULL == a->pLeft)          cur = -1;      middleOrder(a);      cout<<maxDis<<endl;}

另一种思路是根据树的高度去判断。

总长度等于左子树的高度加上右子树的高度。代码先略了。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一个字包含的二进制位数 linux面试 【题目2】设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好 【题目2】设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好 结构体比较好友中年纪最小的 matlab三维矩阵可视化 使QQ崩溃 scanIP 按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50% c语言输入三个数字 c语言如何输入三个数求平均值 c语言如何输入三个数求和 C语言为什么只录入了第一个数字 输入多个数字 c语言scanf只有第一个数字 scanf三个整数 double double类型 www和http 会计 日记账 myamnatfound IntroductiontoIoT IntroductiontoIoT 使用哪种类型的无线网络连接城市中的设备来创建城域网 傲世九重天绿帽版 节日 第一章《Java》的思维导图 《Java》的思维导图 python登录大华摄像机 2019普通高等学校招生全国统一考试诊断卷a 考前诊断卷 Travelingsalesmenofnhn.(theprestigiousKoreanintern www。qwer123。com Ubuntu --------------------------http://s.jiafeiyun.com/p getpid函数执行过程 增量模型 Hresult:0x80041966 qt音视频 verilig