leetcode102. 두 갈래 나무의 층계가 두루 다니다
7542 단어 Leetcode 트리
예: 두 갈래 나무: [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
그 차원 반복 결과:
[ [3], [9,20], [15,7] ]
사고방식: 대기열로 이 문제를 실현할 수 있다. 각 층의 노드가 대기열에 저장된 다음에 노드 값을 얻은 후에 이 노드가 좌우 하위 노드가 있는지 판단하고 있으면 저장한다. 저장한 후에 이 노드를 삭제해야 한다. 하나의 순환으로 이 층의 노드가 반복적으로 완성되는지 제어해야 각 층의 노드가 모두 얻을 수 있다.
/**
* Definition for a binary tree node.
* * struct TreeNode {
* * int val;
* * TreeNode *left;
* * TreeNode *right;
* * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* * };
* */
* class Solution {
* public:
* vector<vector<int>> levelOrder(TreeNode* root) {
* vector<vector<int>> vecRes;
* if(root == NULL)
* return vecRes;
* queue<TreeNode *> que;
* que.push(root);
* while(!que.empty())
* {
* vector<int> vecTemp;
* int nSize = que.size();
* for(int i=0;i<nSize;i++)
* {
* TreeNode * pNode = que.front();
* vecTemp.push_back(pNode->val);
* if(pNode->left != NULL)
* {
* que.push(pNode->left);
* }
* if(pNode->right != NULL)
* {
* que.push(pNode->right);
* }
* que.pop();
* }
* vecRes.push_back(vecTemp);
* }
return vecRes;
}
};