leetcode 문제집 894-가능한 모든 두 갈래 나무
1359 단어 leetcode
894- 가능한 모든 두 갈래 나무
사고방식: 이 문제는 두 갈래 나무의 모든 가능성을 요구하고 귀속을 채택하는 것이 비교적 간단하다.귀속 프로세스: 뿌리 노드가 하나의 노드를 차지하고 그 다음에 좌우 트리의 가능성을 고려한다.먼저 두 갈래 나무의 성질에 따라 귀속 중단의 조건을 확정한다. 짝수 노드가 될 수 없다.노드 수가 1이면 루트만 있습니다.다시 돌아갈 필요 없어.좌우자수의 가능성은 귀속을 통해 구할 수 있으며, 마지막으로 좌우자수와 뿌리 노드를 조합하는 것이다.최적화: 앞의 각종 노드의 결과를 저장하고 후속적으로 서로 다른 반복 귀속 계산을 한다.
//
// : n
vector allPossibleFBT(int N) {
//
//
vector res;
if(N & 1 == 0)
{
//
return res;
}
if(N == 1)
{
//
res.push_back(new TreeNode(0));
return res;
}
//
// , 1,3,5......N-2 , 2
for(int i = 1; i < N-1; i+=2)
{
vector left = allPossibleFBT(i);
vector right = allPossibleFBT(N-1-i);
//
for(int m = 0; m < left.size(); ++m)
{
for(int n = 0; n < right.size(); ++n)
{
TreeNode*root = new TreeNode(0);
root->left = left[m];
root->right = right[n];
res.push_back(root);
}
}
}
return res;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.