18923 二叉树的直径 —— SCAU 数据结构——根据树的深度算法求树的直径

本文介绍了一种在求解二叉树深度的过程中同时计算直径的方法。通过在原有树的深度算法中插入计算直径的步骤,找出所有节点直径的最大值,从而得到整棵树的直径。以C语言实现,无复杂代码和详细注释,适用于理解二叉树直径问题的解决思路。
摘要由CSDN通过智能技术生成

C,无复杂代码,无详细注释,自写,请读者视情参考

思想:

我们在求树的深度的时候,一般采用两种方法,一种是递归计算子树的深度,一种是非递归遍历树,取栈顶指针的最远处。

对于第一种方法,其思想是对某一个节点,比较其左子树的深度和右子树的深度,取最长便是当前节点的深度。

那么是否可以利用这个比较的间隙,将左子树的深度和右子树的深度加在一起,得出当前节点的直径呢?如果可以,那么所有节点的直径中取最大值,便是一整棵树的直径了。

所需知识:

C,二叉树,树的深度算法

途径:

在树的深度算法中插入一个计算直径的语句,保存直径的最大值。

举例:

#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
#define ElemType int
#define OK 1
#define  ERROR 0
#define MaxNodeCount 50
typedef int Status;

typedef struct BiTreeNode
{
   
	ElemType data;
	struct BiTreeNode* lchild;
	struct BiTreeNode* rchild;
}BiTreeNode, * Bitree;

Bitree Queue[MaxNodeCount];
int front = 0, rear = 0, last 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值