二叉樹最大路徑和 python 二叉樹最大路徑和

2021-10-11 22:21:53 字數 1404 閱讀 9604

1. 題目描述

輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。

如輸入:[-10,9,20,null,null,15,7]

-109  20

15   7

輸出:42

2. **

首先將乙個陣列還原成乙個二叉樹。

然後根絕二叉樹的根節點返回最大路徑和。

class main;

object layers2 = new object;

treenode root = coverttonode(layers2, 0);

system.out.println(new main().maxpathsum(root));

//把輸入的乙個陣列轉成二叉樹,返回根節點

private static treenode coverttonode(object layers, int index) else{

treenode node = new treenode((integer)layers[index]);

node.left = coverttonode(layers, 2 * index + 1);

node.right = coverttonode(layers, 2 * index + 2);

return node;

//begin

public int max = integer.min_value;

public int maxpathsum(treenode root){

maxgain(root);

return max;

private int maxgain(treenode root) { //表示經過節點root的最大路徑和

if(root == null){

return 0;

int left = math.max(maxgain(root.left), 0); //root左側節點的路徑最大值

int right = math.max(maxgain(root.right), 0);

int value = left + root.val + right;

max = math.max(max, value);

return root.val + math.max(left, right);

//end

//定義乙個二叉樹節點

class treenode{

int val;

treenode left;

treenode right;

public treenode(int val){

this.val = val;

this.left = null;

this.right = null;

二叉樹最大路徑和

每個節點不可以重複經過求,求二叉樹的最大路徑和。二叉樹如圖 本文採用深度優先演算法解題。假設每個節點都有兩個屬性,s stop c continue s屬性為,該節點及其以下節點的不停止走法最大值。c屬性為在還有路可走的情況下的最大值。舉例說明 node4節點,有兩條路可走 路線一和路線二 路線一意...

二叉樹中最大路徑和

給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。輸出 6 解析 2 1 3為最大路徑和 輸出 42 解析 15 20 7為最大路徑和 func maxpathsum root treenode int ...

二叉樹的最大路徑和

給定乙個非空二叉樹,返回其最大路徑之和。本題中,路徑被定義為一條從任意節點出發,沿父節點 子節點連線,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例一 輸入 1,2,3 輸出 6 解釋 示例二 輸入 10,9,20,null,null,15,7 輸出 42 解釋 這道題我覺得比...