美文网首页
二叉树 - 最大距离

二叉树 - 最大距离

作者: GOGOYAO | 来源:发表于2019-07-21 16:04 被阅读0次

参考二叉树的最大距离

求二叉树的深度代码很简洁,如下:

int DepthOfBinaryTree(BinaryTreeNode*pNode){
    if (pNode==NULL) {
        return 0;
    }
    else {  //递归
        return DepthOfBinaryTree(pNode->m_pLeft) > DepthOfBinaryTree(pNode->m_pRight) ?
               DepthOfBinaryTree(pNode->m_pLeft) + 1 : DepthOfBinaryTree(pNode->m_pRight) + 1;
    }

我们要求的二叉树的最大距离,肯定是某个节点左子树的高度加上右子树的高度加2,所以求出每个节点左子树和右子树的高度,取左右子树高度之和加2的最大值即可,假设空节点的高度为-1
代码如下:


int HeightOfBinaryTree(BinaryTreeNode*pNode, int&nMaxDistance){
    if (pNode == NULL)
        return -1;   //空节点的高度为-1
    //递归
    int nHeightOfLeftTree = HeightOfBinaryTree(pNode->m_pLeft, nMaxDistance) + 1;   //左子树的的高度加1
    int nHeightOfRightTree = HeightOfBinaryTree(pNode->m_pRight, nMaxDistance) + 1;   //右子树的高度加1
    int nDistance = nHeightOfLeftTree + nHeightOfRightTree;    //距离等于左子树的高度加上右子树的高度+2
    nMaxDistance = nMaxDistance > nDistance ? nMaxDistance : nDistance;            //得到距离的最大值
    return nHeightOfLeftTree > nHeightOfRightTree ? nHeightOfLeftTree : nHeightOfRightTree;
}

相关文章

  • 二叉树 - 最大距离

    参考二叉树的最大距离 求二叉树的深度代码很简洁,如下: 我们要求的二叉树的最大距离,肯定是某个节点左子树的高度加上...

  • 二叉树内两个节点的最长距离

    二叉树内两个节点的最长距离 二叉树中两个节点的最长距离可能有三种情况: 1.左子树的最大深度+右子树的最大深度为二...

  • OJ lintcode 二叉树的最大深度

    给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。

  • LeetCode0305

    461. 汉明距离 617. 合并二叉树 226. 翻转二叉树 104. 二叉树的最大深度 206. 反转链表 2...

  • 二叉树面试题基本问题

    二叉树的最大深度与最小深度 二叉树的最大深度 最大深度是指二叉树根节点到该树叶子节点的最大路径长度。而最小深度自然...

  • 求一个二叉树中任意两个节点间的最大距离

    问题:求一个二叉树中任意两个节点间的最大距离。 此题可通过求二叉树的深度的思路来解:bin_tree_2_node...

  • LeetCode 深度优先遍历

    概述 前言 104 二叉树的最大深度【简单】 111 二叉树的最小深度 【简单】 124 二叉树中的最大路径和 【...

  • 2018-03-10 求二叉树直径

    二叉树的直径就是任意两点之间的最大距离。图中直径为[4,2,1,3]。 可以看到,图中的树直径为4到3之间的距离,...

  • 2017数据结构

    选择: 非常简单,最基础的证明。 最难的一道:n层的整二叉树两个节点的最远距离是多少? 分析:  最大距离可能一个...

  • 二叉树最大最小深度的递归非递归实现

    一、二叉树最大深度 二叉树的最大深度是根节点到叶子节点的最大长度 1.1 最大深度的递归实现 传入根节点,得到左右...

网友评论

      本文标题:二叉树 - 最大距离

      本文链接:https://www.haomeiwen.com/subject/natvlctx.html