zoukankan      html  css  js  c++  java
  • LeetCode——Diameter of Binary Tree

    LeetCode——Diameter of Binary Tree

    Question

    Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may not pass through the root.

    Example:
    Given a binary tree
    1
    /
    2 3
    /
    4 5
    Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].

    Note: The length of path between two nodes is represented by the number of edges between them.

    解题思路

    求树的直径意思就是求树的左子树的高度+右子树的高度。 然后遍历所有节点,找到最大值作为直径。

    具体实现

    class Solution {
    public:
    
        // 左子树的高度+右子树的高度
        int max_height = 0;
        int diameterOfBinaryTree(TreeNode* root) {
            if (!root) {
                return 0;
            }
            int left = height(root->left);
            int right = height(root->right);
            int tmp = left + right;
            if (tmp > max_height)
                max_height = tmp;
            diameterOfBinaryTree(root->left);
            diameterOfBinaryTree(root->right);
    
            return max_height;
        }
    
        int height(TreeNode* root) {
            if (!root) {
                return 0;
            }
            else {
                int i = height(root->left);
                int j = height(root->right);
                if (i >= j) {
                    return ++i;
                } else {
                    return ++j;
                }
            }
        }
    };
    
  • 相关阅读:
    ## js 性能 (未完。。。)
    React 创建元素的几种方式
    Json 与 javascript 对象的区别
    js 基本数据类型
    第十三章 事件
    第十二章 DOM2和DOM3
    第十一章 DOM扩展
    第十章 DOM
    第八章 BOM
    第七章 函数表达式
  • 原文地址:https://www.cnblogs.com/zhonghuasong/p/6656236.html
Copyright © 2011-2022 走看看