All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0501_0600.s0543_diameter_of_binary_tree.solution.go Maven / Gradle / Ivy

The newest version!
package s0543_diameter_of_binary_tree

// #Easy #Top_100_Liked_Questions #Depth_First_Search #Tree #Binary_Tree #Level_2_Day_7_Tree
// #Udemy_Tree_Stack_Queue #Big_O_Time_O(n)_Space_O(n)
// #2024_03_12_Time_3_ms_(71.60%)_Space_6.8_MB_(5.31%)

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func diameterOfBinaryTree(root *TreeNode) (answer int) {
	var dfs func(*TreeNode) int
	dfs = func(node *TreeNode) int {
		if node == nil {
			return 0
		}

		left, right := dfs(node.Left), dfs(node.Right)
		answer = max(answer, left+right)
		return max(left, right) + 1
	}
	dfs(root)

	return answer
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy