当前位置: 代码迷 >> 综合 >> 求解树的最长路径
  详细解决方案

求解树的最长路径

热度:29   发布时间:2023-09-22 07:07:08.0

对一个树的最长路径,进行以下分析:
1.左子节点的最长路径。

2.右子节点的最长路径。
3.左子节点的深度加上右子节点的深度。

数据结构及代码如下:
typedef struct node
{int data;struct node *lchild;struct node *rchild;
}BTnode;//二叉树
int height(BTnode*h)//求以h为根节点的树的高度
{int lchildh, rchildh;if (h == NULL)return 0;else{lchildh = height(h->lchild);rchildh = height(h->rchild);return (lchildh > rchildh) ? (lchildh + 1) : (rchildh + 1);}
}
int findmaxlength(BTnode*h)//求最大路径长度
{int length1, length2;length1 = findmaxlength(h->lchild);length2 = findmaxlength(h->rchild);int max;if (h == NULL)return 0;else if (length1 < length2)max = length2;elsemax = length1;int sum = height(h->lchild) + height(h->rchild);if (max < sum)max = sum;return sum;
}

  相关解决方案