当前位置:   article > 正文

【leetcode】 543. 二叉树的直径_leetcode 543

leetcode 543

一、题目

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

注意:两结点之间的路径长度是以它们之间边的数目表示。

二、解题思路

分别计算左子树和右子树的最大深度,二叉树直径为depth(root.left)+depth(root.right)

三、代码

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode() {}
  8. * TreeNode(int val) { this.val = val; }
  9. * TreeNode(int val, TreeNode left, TreeNode right) {
  10. * this.val = val;
  11. * this.left = left;
  12. * this.right = right;
  13. * }
  14. * }
  15. */
  16. class Solution {
  17. int ans=0;
  18. public int diameterOfBinaryTree(TreeNode root) {
  19. depth(root);
  20. return ans;
  21. }
  22. public int depth(TreeNode root) {
  23. if(root==null) {
  24. return 0;
  25. }
  26. int left=depth(root.left);
  27. int right=depth(root.right);
  28. //记录最大二叉树的最大直径,即左子树的深度+右子树的深度
  29. ans=Math.max(ans, left+right);
  30. //最大深度为max(左子树深度,右子树深度)+1
  31. return Math.max(left, right)+1;
  32. }
  33. }

四、运行结果 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/547332
推荐阅读
相关标签
  

闽ICP备14008679号