[매일 한 문제] 층층이 훑어보다.
2326 단어 문제를 풀다
오늘은 주로 [층층이 두루 훑어보기]---> 면접 상시 시험, 반드시 해야 합니다^_^
[제목] 두 갈래 나무를 정하고 그 노드 값이 밑에서 위로 올라가는 차원으로 되돌아간다.(즉, 잎 노드가 있는 층에서 뿌리 노드가 있는 층으로 한 층씩 왼쪽에서 오른쪽으로 옮겨간다)
예를 들어 두 갈래 나무를 지정합니다
[3,9,20,null,null,15,7]
, 3
/ \
9 20
/ \
15 7
다음 단계를 반복하여 맨 위에서 아래로 돌아갑니다.
[
[3]
[9,20],
[15,7],
]
아래에서 위로 올라가는 단계를 다음과 같이 되돌려줍니다.
[
[15,7],
[9,20],
[3]
]
【코드 구현】
#include
using namespace std;
#include
#include
#include
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
//
//class Solution {
//public:
// vector> levelOrder(TreeNode* root) {
// vector> result;// ; ,result
// if (NULL == root)
// {
// return result;
// }
// // ---》
// queue qu;
// qu.push(root);// ;
// while (!qu.empty())
// {
// vector tmp;//
// int sz = qu.size();
// while (sz--)
// {
// //
// TreeNode* topnode = qu.front();
// qu.pop();
// tmp.push_back(topnode->val);
// if (topnode->left)
// {
// qu.push(topnode->left);
// }
// if (topnode->right)
// {
// qu.push(topnode->right);
// }
// }
// result.push_back(tmp);
// }
// return result;
// }
//};
//
class Solution {
public:
vector> levelOrder(TreeNode* root) {
vector> result;
if (NULL == root)
{
return result;
}
queue qu;
qu.push(root);
while (!qu.empty())
{
vector tmp;
int sz = qu.size();
while (sz--)
{
//
TreeNode* topnode = qu.front();
qu.pop();
tmp.push_back(topnode->val);
if (topnode->left)
{
qu.push(topnode->left);
}
if (topnode->right)
{
qu.push(topnode->right);
}
}
result.push_back(tmp);
}
// ,
reverse(result.begin(), result.end());
return result;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
리셋 문제 - 전화번호의 알파벳 조합제목:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 1. 해시는 층층이 비치고 있다 2. 귀속...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.