[Leetcode] #102 Binary Tree Level Order Traversal

来源:互联网 发布:什么软件找工作好 编辑:程序博客网 时间:2024/06/06 04:10

Discription:

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3   / \  9  20    /  \   15   7

return its level order traversal as:

[  [3],  [9,20],  [15,7]]

Solution:

#include<iostream>#include<queue>#include<algorithm>using namespace std;struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;queue<TreeNode*> que;if (!root) return result;que.push(root);while (!que.empty()){int size = que.size();vector<int> row;while (size-- > 0){TreeNode *temp = que.front();que.pop();row.push_back(temp->val);if (temp->left)que.push(temp->left);if (temp->right)que.push(temp->right);}result.push_back(row);}return result;}TreeNode* creatBTree(int data[], int index, int n){TreeNode *pNode = NULL;if (index < n && data[index]!=-1)  //-1令树结点为NULL{pNode = new TreeNode(data[index]);pNode->left = creatBTree(data, 2 * index + 1, n);  //将二叉树按照层序遍历, 依次标序号, 从0开始pNode->right = creatBTree(data, 2 * index + 2, n);}return pNode;}int main(){int a[] = { 2, 3, 3, 4, 5, 5, -1, 8 };  int size = sizeof(a) / sizeof(int);TreeNode* root = creatBTree(a, 0, size);vector<vector<int>> ans = levelOrder(root);for (int i = 0; i < ans.size(); i++){for (int j = 0; j < ans[i].size(); j++){cout << ans[i][j] << ' ';}cout << endl;}cin.get();return 0;}


0 0
原创粉丝点击