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,#,#,15,7},
return its level order traversal as:
1 2 3 4 5
[ [3], [9,20], [15,7] ]
confused what “{1,#,2,3}” means? > read more on how binary tree is serialized on OJ.
OJ’s Binary Tree Serialization: The serialization of a binary tree follows a level order traversal, where ‘#’ signifies a path terminator where no node exists below. Here’s an example:
The above binary tree is serialized as “{1,2,3,#,#,4,#,#,5}”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
class {public :vector <vector <int >> result; vector <vector <int >> levelOrder(TreeNode* root) { find(root); return result; } void find (TreeNode* root) { if (!root) return ; queue <TreeNode *> nodeQueue; nodeQueue.push(root); vector <int > temp; temp.push_back(root->val); result.push_back(temp); TreeNode* node; int size; while (!nodeQueue.empty()){ size=nodeQueue.size(); temp.clear(); for (int i=0 ;i<size;i++){ node = nodeQueue.front(); nodeQueue.pop(); if (node->left){ nodeQueue.push(node->left); temp.push_back(node->left->val); } if (node->right){ nodeQueue.push(node->right); temp.push_back(node->right->val); } } if (!temp.empty())result.push_back(temp); } };
近期评论