LeetCode 102.ツリーの階層遍歴C++コード実装
1293 ワード
タイトルの説明:
ツリーを指定して、階層的にループするノード値を返します.(つまり、左から右へすべてのノードに階層的にアクセスします).
例えば、所与の二叉木:
階層遍歴の結果を返します.
問題解決の考え方:count値を設定して各層の変数数を格納し、順次ポップアップすればよい.
コード実装:
ツリーを指定して、階層的にループするノード値を返します.(つまり、左から右へすべてのノードに階層的にアクセスします).
例えば、所与の二叉木:
[3,9,20,null,null,15,7]
、 3
/ \
9 20
/ \
15 7
階層遍歴の結果を返します.
[
[3],
[9,20],
[15,7]
]
問題解決の考え方:count値を設定して各層の変数数を格納し、順次ポップアップすればよい.
コード実装:
/**
* 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> levelOrder(TreeNode* root) {
int count;
TreeNode* temp;
vector a;
vector> b;
queue q;
if(!root) return b;
q.push(root);
while(q.size()){ // count
count=q.size();
a.clear();
while(count--){ //
temp=q.front();
if(temp->left) q.push(temp->left);
if(temp->right) q.push(temp->right);
q.pop();
a.push_back(temp->val);
}
b.push_back(a);
}
return b;
}
};