검지 32-3 위에서 아래로 두 갈래 나무 인쇄
예를 들어 두 갈래 나무를 주면[3,9,20,null,null,15,7],
3/\9 20/\15 7은 다음 단계를 반복합니다.
[ [3], [20,9], [15,7]]
이 문제는 지점별로 인쇄해야 하기 때문에 각 줄의 길이를 미리 기록해야 한다.지그재그를 원하기 때문에 짝수 줄과 홀수 줄을 각각 처리하는 창고가 2개 필요하다.현재 홀수 행(root는 첫 번째 줄로 간주)이면 왼쪽 트리를 눌러서 오른쪽 트리를 눌러줍니다.그렇지 않으면 먼저 오른쪽 나무를 눌러서 왼쪽 나무를 눌러라.
여기에는 even으로 홀수 줄인지 짝수 줄인지 표시하고stack 수조에 맞추면 코드를 간소화할 수 있습니다.
 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vectorint>> levelOrder(TreeNode* root) {
13         if(root==nullptr)
14             return {};
15         vectorint>> ret;
16         vector<int> partial_ret;
17         stack stackTreenodes[2];
18         int even=1;
19         TreeNode* curptr=root;
20         stackTreenodes[1-even].push(curptr);
21         while(!stackTreenodes[1-even].empty()){
22             even=1-even;
23             int size=stackTreenodes[even].size();
24             while(size!=0){
25                 curptr=stackTreenodes[even].top();
26                 stackTreenodes[even].pop();
27                 size--;
28                 partial_ret.push_back(curptr->val);
29                 if(even){
30                     if(curptr->right!=nullptr)
31                         stackTreenodes[1-even].push(curptr->right);
32                     if(curptr->left!=nullptr)
33                         stackTreenodes[1-even].push(curptr->left);
34                 }
35                 else{
36                     if(curptr->left!=nullptr)
37                         stackTreenodes[1-even].push(curptr->left); 
38                     if(curptr->right!=nullptr)
39                         stackTreenodes[1-even].push(curptr->right);
40                 }
41             }
42             ret.push_back(partial_ret);
43             partial_ret.clear();
44         }
45         return ret;
46     }
47 };   이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.