
方法1: dfs。这道题现在完全在我能力范围之外,我现在是算基本看懂了这题怎么做,但是要在面试中限时完成我估计不太可能。这道题目的思路可以去看lc官方的解答,一步步引导,解释的很不错。时间复杂n,空间复杂logn。
/**
* 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 {
int max_sum = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
max_gain(root);
return max_sum;
}
private int max_gain(TreeNode node){
if(node == null) return 0;
int left_gain = Math.max(max_gain(node.left), 0);
int right_gain = Math.max(max_gain(node.right), 0);
int price_newpath = node.val + left_gain + right_gain;
max_sum = Math.max(max_sum, price_newpath);
return node.val + Math.max(left_gain, right_gain);
}
}
总结:
- 无
本文解析了一道涉及二叉树的编程题目,介绍了使用深度优先搜索(DFS)寻找最大路径和的方法,时间复杂度为O(n),空间复杂度为O(logn)。通过逐步讲解和代码实现,帮助读者理解如何在面试中高效解决此类问题。
545

被折叠的 条评论
为什么被折叠?



