求解树的最长路径

对一个树的最长路径,进行以下分析:
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;
	 else
		 max = length1;
	 int sum = height(h->lchild) + height(h->rchild);
	 if (max < sum)
		 max = sum;
	 return sum;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值