Binary Tree Maximum Path Sum II
public class Solution {
/**
* @param root: the root of binary tree.
* @return: An integer
*/
public int maxPathSum2(TreeNode root) {
if (root == null) return 0;
int ans = Integer.MIN_VALUE;
Queue<NewNode> queue = new LinkedList<>();
queue.add(new NewNode(root, root.val)); //NewNode.sum 在这里初始化的?
while (!queue.isEmpty()) {
NewNode cur = queue.poll();
if (cur.sum > ans) {
ans = cur.sum;
}
if (cur.treeNode.left != null) queue.offer(new NewNode(cur.treeNode.left, cur.sum + cur.treeNode.left.val));
if (cur.treeNode.left != null) queue.offer(new NewNode(cur.treeNode.right, cur.sum + cur.treeNode.right.val));
}
return ans;
}
public class NewNode {
public TreeNode treeNode;
public int sum;
public NewNode(TreeNode treeNode, int sum) {
this.treeNode = treeNode;
this.sum = sum;
}
}
}
最后更新于
这有帮助吗?