트리의 최대 경로 및 Binary Tree Maximum Path Sum
사고방식 1: 점차 사고방식으로 돌아간다.왼쪽 아이에서 아래로 잎 결점까지의 최대 단방향 경로와 오른쪽 아이에서 아래로 잎 결점까지의 최대 단방향 경로와 두 가지를 더하고 뿌리 노드 자체의 값을 더하면 뿌리 노드를 통과하는 최대 경로와그리고 두 아이의 가장 큰 경로와최대 경로 3개와 에서 최대 값을 선택합니다.
사고방식 2: 사고방식 1 시간 초과.간소화!방법을 강구하여 최대 단방향 경로와 방법을 구하는 과정에서 최치를 찾다.단방향의 최대 귀속을 구하는 과정에서 양방향 경로의 최대 값을 실시간으로 업데이트합니다.
코드:
class Solution {
public:
int maxPathSum(TreeNode *root) {
if(root == NULL)
return 0;
int max = root->val;
fun(root, max);
return max;
}
int fun(TreeNode *root, int &max) //
{
if(root == NULL)
return 0;
int left = fun(root->left, max);
if(left < 0) //
left = 0;
int right = fun(root->right, max);
if(right < 0) //
right = 0;
// root
if(left + right + root->val > max)
max = left + right + root->val;
if(left > right)
return left + root->val;
else
return right + root->val;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.