검지 offer - 지그재그 순서로 두 갈래 나무 인쇄
3278 단어 필기시험
제목
지그재그 순서로 두 갈래 나무를 인쇄하다
시간제한: 1초 공간제한: 32768K 열도지수: 106091
제목 설명은 함수를 지그재그로 인쇄하는 두 갈래 트리, 즉 첫 번째 줄은 왼쪽에서 오른쪽으로, 두 번째 줄은 오른쪽에서 왼쪽으로, 세 번째 줄은 왼쪽에서 오른쪽으로, 다른 줄은 이와 같이 인쇄합니다.
해법
코드
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot)
{
vector<vector<int>> result;
if(pRoot==NULL)
return result;
vector<int> current_layer;
queue nodes;
queue<bool> labels;
bool current_label;
TreeNode* current=NULL;
current_label=true;
labels.push(true);
nodes.push(pRoot);
while(!nodes.empty())
{
current=nodes.front();
if(labels.front()==current_label)
{
current_layer.push_back(current->val);
}
else
{
if(current_label)
reverse(current_layer.begin(),current_layer.end());
result.push_back(current_layer);
current_layer.clear();
current_layer.push_back(current->val);
current_label=(!current_label);
}
if(current->right!=NULL)
{
nodes.push(current->right);
labels.push(!labels.front());
}
if(current->left!=NULL)
{
nodes.push(current->left);
labels.push(!labels.front());
}
nodes.pop();
labels.pop();
}
if(!current_layer.empty())
{
if(current_label)
reverse(current_layer.begin(),current_layer.end());
result.push_back(current_layer);
}
return result;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무 중 두 노드의 가장 가까운 공공 조상을 찾다제목: 두 갈래 나무 중 두 노드의 가장 가까운 공공 조상을 찾아 되돌려 달라고 한다. 알고리즘 사상: 이 문제의 관건은 모든 노드에 부모 노드를 가리키는 바늘을 포함하는 데 있다. 이로써 프로그램은 간단한 알고리즘...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.