zoukankan      html  css  js  c++  java
  • leetcode543 二叉树的直径(Easy 不简单)

    题目来源:leetcode543

    题目描述:

    给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
    注意:两结点之间的路径长度是以它们之间边的数目表示。

    解题思路:

    递归。任意一条路径均可以被看作由某个节点为起点,从其左儿子和右儿子向下遍历的路径拼接得到

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        int ans=0;
        int diameterOfBinaryTree(TreeNode* root) {
            depth(root);
            return ans-1;//边的数目
        }
        int depth(TreeNode* root){
            if(root==NULL) return 0;
            int l=depth(root->left);
            int r=depth(root->right);
            ans=max(ans,l+r+1);//结点数目
            return max(l,r)+1;
        }
    };
    
  • 相关阅读:
    音频可视化
    accunulate
    node
    js 中编码(encode)和解码(decode)的三种方法
    ES6高阶 同步和异步 回调地狱 promise async和await
    区间dp
    树形dp1
    背包dp(多重)
    树形dp
    背包dp(完全)
  • 原文地址:https://www.cnblogs.com/yjcoding/p/13265691.html
Copyright © 2011-2022 走看看