【DFS】LeetCode 543. 二叉树的直径
题目链接
思路
创建全局变量 diameter
以记录左子树高度加右子树高度,并在 DFS 过程中维护此变量。
代码
class Solution {
int diameter;
public int diameterOfBinaryTree(TreeNode root) {
this.diameter = 0;
dfs(root);
return this.diameter;
}
// 返回树的深度
int dfs(TreeNode root) {
if(root == null){
return 0;
}
int left = dfs(root.left); // 左子树的深度
int right = dfs(root.right); // 右子树的深度
this.diameter = Math.max(this.diameter, left + right);
return 1 + Math.max(left, right);
}
}