程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [LeetCode]Binary Tree Maximum Path Sum

[LeetCode]Binary Tree Maximum Path Sum

編輯:C++入門知識

[LeetCode]Binary Tree Maximum Path Sum


Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

For example:
Given the below binary tree,

       1
      / \
     2   3

Return 6.

maxPath記錄最大的路徑,計算方式是

    	int sum = root.val;
    	if(left>0) sum += left;
    	if(right>0) sum += right;
    	maxPath = Math.max(sum, maxPath);
然後深搜每個節點,該節點返回的是這個節點的值加上較大的左子樹或者較大的右子樹


/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
	int maxPath = Integer.MIN_VALUE;
    public int maxPathSum(TreeNode root) {
        dfs(root);
        return maxPath;
    }
    
    private int dfs(TreeNode root){
    	if(root==null) return 0;
    	int left = dfs(root.left);
    	int right =  dfs(root.right);
    	int sum = root.val;
    	if(left>0) sum += left;
    	if(right>0) sum += right;
    	maxPath = Math.max(sum, maxPath);
    	return Math.max(left, right)>0?root.val+Math.max(left, right):root.val;
    }
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved