검지 32-1 위에서 아래로 두 갈래 나무 인쇄
예를 들어 두 갈래 나무를 주면[3,9,20,null,null,15,7],
3/\9 20/\15 7 반환:
[3,9,20,15,7]
위에서 아래로 해야 하기 때문에 선진적인 선출을 요구하고, 먼저 눌린 층은 먼저 출력해야 하기 때문에 대열을 채택한다.
첫 번째 층부터 루트 노드의 값을 출력한 다음 왼쪽 트리를 대기열에 눌러 넣습니다 (비워 있지 않은 경우).
그 다음에 층마다 대기열의 길이, 즉 이 층의 노드의 수량을 기록한 다음에 하나씩 튀어나와 이 층의 각 노드에 값을 출력한 다음에 좌우 트리를 눌러 넣는다.이 노드의 수량을 미리 기록했기 때문에 다음 층으로 출력되지 않습니다.
루트 노드가 비어 있는 상황을 주의하십시오.
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 vector<int> levelOrder(TreeNode* root) {
13 if(root==nullptr)
14 return {};
15 queue q;
16 vector<int> ret;
17 ret.push_back(root->val);
18 if(root->left!=nullptr)
19 q.push(root->left);
20 if(root->right!=nullptr)
21 q.push(root->right);
22 while(!q.empty()){
23 int cur_size=q.size();
24 while(cur_size!=0){
25 TreeNode* curptr=q.front();
26 q.pop();
27 cur_size--;
28 ret.push_back(curptr->val);
29 if(curptr->left!=nullptr)
30 q.push(curptr->left);
31 if(curptr->right!=nullptr)
32 q.push(curptr->right);
33 }
34 }
35 return ret;
36 }
37 };
사고를 통해 각 층의 수량을 기록하는 것은 사실 완전히 헛수고이다. 왜냐하면 본 문제는 층을 나누어 출력하지 않고 다음 층으로 직접 순서를 정하는 것은 전혀 영향을 주지 않기 때문이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.