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, ...
可能的最大直径=leftNode到rootNode的距离+rootNode到rightNode的距离; 那么,因为二叉树也并不只有3个节点,如果节点很多的话,那么这个二叉树的层级也就会越深,那么下面我们其实如果能找到leftNode到rootNode距离的最大值(或最深路径)以及找到rootNode到rightNode距离的最大值(或最深路径),那么相加必然就是本题所要...
一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 题目分析 如图二叉树:直径应该为3,长度路径:[10,1,2,3] 或 [10,1,2,9]。 任意一条路径都可看作由某个节点(比如节点 1 )为起点,从其左子树和右子树向下遍历的路径拼接得到。 此时,问题就转化为:求节点的...