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