public: int diameterOfBinaryTree(TreeNode* root) { auto _ = solve(root); return ans; } int solve(TreeNode *root) { if(root == nullptr) return 0; int lefLen = solve(root -> left); int rigLen = solve(root -> right); ans = max(ans, lefLen + rigLen); return max(lefLen, ...
-100<= Node.val <=100 三、解题思路 根据题目描述,我们要获得二叉树中任意两个节点的最大直径。那么如何确定哪两个节点是值得去进行计算的?或者那两个节点我们应该去进行计算。以一个3节点的子树为例,分为:根节点(rootNode)、左子节点(leftNode)和右子节点(rightNode),那么leftNode到rootNode的距离和rootNod...
一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 题目分析 如图二叉树:直径应该为3,长度路径:[10,1,2,3] 或 [10,1,2,9]。 任意一条路径都可看作由某个节点(比如节点 1 )为起点,从其左子树和右子树向下遍历的路径拼接得到。 此时,问题就转化为:求节点的...