Skip to content

Latest commit

 

History

History
67 lines (51 loc) · 1.44 KB

20210216.md

File metadata and controls

67 lines (51 loc) · 1.44 KB

Algorithm

543. Diameter of Binary Tree

Description

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

Solution

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
 class Solution {
     private int max = 0;

     public int diameterOfBinaryTree(TreeNode root) {
         nodes(root);
         return max;
     }

     private int nodes(TreeNode root) {
         if (root == null) return 0;
         int leftNodes = nodes(root.left);
         int rightNodes = nodes(root.right);
         max = Math.max(max, leftNodes + rightNodes);
         return 1 + Math.max(leftNodes, rightNodes);
     }
 }

Discuss

Review

Tip

Share