问题:
方法:
DFS问题的变种,在遍历过程中在每个节点获取左子树与右子树的最大深度,然后计算左右深度和,取所有节点中最大的和即为结果。
package com.eric.leetcode
class DiameterOfBinaryTree {
var result = 0;
fun diameterOfBinaryTree(root: TreeNode?): Int {
diameter(root)
return result
}
private fun diameter(root: TreeNode?): Int {
if (root == null) {
return 0
}
val left = diameter(root.left)
val right = diameter(root.right)
result = maxOf(1 + left + right, result)
return 1 + maxOf(left, right)
}
}
有问题随时沟通