[leetcode]: 543. Diameter of Binary Tree

骑猪看日落 2022-06-15 00:10 426阅读 0赞

1.题目

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. 1
  2. / \
  3. 2 3
  4. / \
  5. 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.

翻译:给定一棵二叉树,求该树上两个节点之间最长距离

2.分析

例子中最长距离其实是左子树深度+右子树深度。
另一种情况是:

  1. 1
  2. / \
  3. 2 3
  4. / \
  5. 4 5
  6. / \ / \
  7. 6 7 8 9
  8. / \ / \
  9. 11 12 13 14

最长距离出现在11-14
拓展到一般情况:最长距离为这棵树及其所有子树的最长距离的最大值。

3.代码

  1. int diameterOfBinaryTree(TreeNode* root) {
  2. if (root == NULL)
  3. return 0;
  4. return max(getTreeHeight(root->left) + getTreeHeight(root->right), max(diameterOfBinaryTree(root->left), diameterOfBinaryTree(root->right)));
  5. }
  6. int getTreeHeight(TreeNode* root) {
  7. if (root == NULL)
  8. return 0;
  9. return 1 + max(getTreeHeight(root->left), getTreeHeight(root->right));
  10. }

发表评论

表情:
评论列表 (有 0 条评论,426人围观)

还没有评论,来说两句吧...

相关阅读