色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java求二叉樹最大路徑和

陳怡靜1年前8瀏覽0評論

二叉樹是一種廣泛應用于計算機科學和數據結構的樹形結構。在二叉樹中,每個節點最多有兩個子節點。在Java中,可以使用TreeNode類來創建二叉樹。

public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

在計算二叉樹的最大路徑和時,我們需要遍歷整個二叉樹并找到最大路徑。這可以通過遞歸實現。從根節點開始,我們可以計算通過根節點的最大路徑和,并遞歸地計算左子樹和右子樹的最大路徑和。最后,我們返回通過根節點的最大路徑和。

public int maxPathSum(TreeNode root) {
int[] maxSum = new int[]{Integer.MIN_VALUE};
getMaxSum(root, maxSum);
return maxSum[0];
}
private int getMaxSum(TreeNode node, int[] maxSum) {
if(node == null) {
return 0;
}
int leftMaxSum = Math.max(0, getMaxSum(node.left, maxSum));
int rightMaxSum = Math.max(0, getMaxSum(node.right, maxSum));
int nodeMaxSum = node.val + leftMaxSum + rightMaxSum;
maxSum[0] = Math.max(maxSum[0], nodeMaxSum);
return node.val + Math.max(leftMaxSum, rightMaxSum);
}

在這段代碼中,我們使用了一個數組來保存最大路徑和。首先,我們遞歸計算左、右子樹的最大路徑和。然后,我們計算通過當前節點的最大路徑和,并將其與數組中的最大值進行比較。最后,我們返回通過當前節點的最大路徑和。 在進行遞歸計算時,我們采用了一種優化方式。由于路徑可以是任意方向的,我們在計算左右子樹的最大路徑和時,需要判斷路徑是否為負數,如果是負數,那么我們就可以不使用該路徑。這樣可以保證我們所求的最大路徑一定不包含負數路徑。