题解 | #牛群的最长距离#

牛群的最长距离

https://www.nowcoder.com/practice/82848c6aa1f74dd1b95d71f3c35c74d5

考察的知识点:二叉树的递归遍历;

解答方法分析:

  1. 首先,在diameterOfBinaryTree函数中,需要定义一个变量diameter用于记录最大路径长度,并初始化为0。
  2. 然后,在递归函数depth中,对当前节点进行处理:如果当前节点为空,返回0。否则,递归求解当前节点的左子树的高度和右子树的高度,并分别赋值给left和right。计算当前节点为根节点时的路径长度,即左子树高度和右子树高度之和,并将其与diameter比较,更新diameter的值。返回以当前节点为根节点的子树的最大高度,即左子树高度和右子树高度的较大值加1。
  3. 最后,在主函数中调用depth函数,并返回最大路径长度diameter

所用编程语言:C++;

完整编程代码:↓

/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 *  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
  public:
    int diameterOfBinaryTree(TreeNode* root) {
        int diameter = 0;
        depth(root, diameter);
        return diameter;
    }

    int depth(TreeNode* node, int& diameter) {
        if (!node) {
            return 0;
        }

        int left = depth(node->left, diameter);
        int right = depth(node->right, diameter);

        diameter = max(diameter, left + right);

        return max(left, right) + 1;
    }
};

全部评论

相关推荐

07-22 11:07
门头沟学院 Java
点赞 评论 收藏
分享
LazyBreeze:项目尽量体现你对技术的理解和深度,不是说把中间件用一下就完事了,你项目里面提到集群和分布式,你真在服务器上部署过吗,感觉太假了,第二个项目说自己用了微服务的什么组件,只是用了没有自己的思考,很难让面试官注意到你的简历。针对某几个技术点自己多思考一下,考虑一下有没有别的替代方案,可以写一下,即使没有真的实现
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务