求二叉树中最远的两个节点的距离

这篇博客探讨如何通过递归解决二叉树中最远两个节点距离的问题,同时涉及到二叉树的构造、深度计算以及平衡二叉树的判断。通过实例代码和测试用例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求二叉树中最远的两个节点的距离

短短的代码中其实涉及到了三道题目:

  1. 利用已知序列递归的建一棵二叉树
  2. 递归的求一棵树的深度
  3. 求二叉树中距离最远的两个节点的距离
  4. 利用类似的思想判断一棵树是否为平衡二叉树;

    :利用递归求树的深度的思想,在其中加入一个最大距离的引用的参数,利用了引用参数的特性,即可求得最大距离,比较简单,下面列出代码及图示;

给出两组测试用例的图示:

这里写图片描述

//代码实现

#include<iostream>

using namespace std;

//先建一颗二叉树
struct Node
{
    int _data;
    Node* _left;
    Node* _right;

    Node(const int& data):_data(data),_left(NULL),_right(NULL){}
};

class BinaryTree
{
    Node* _root;
public:
    BinaryTree(int* arr,size_t size)
    {
        int index = 0;
        _root = _GreatTree(arr,size,'#',index);
    }


    //前序递归建树
    Node* _GreatTree(int* arr, size_t size,int invalid, int&a
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值