검지 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에 따라 라이센스가 부여됩니다.