1. 题目
2. 解答
定义一个存放树中数据的向量 data,一个存放树的每一层数据的向量 level_data 和一个存放每一层节点的队列 node_queue。
如果根节点非空,根节点进队,然后循环以下过程直至队列为空:
-
- 得到队列的大小,即为树中当前层的节点个数。队列元素循环出队,并将节点的值加入 level_data,如果节点有左右子节点,左右子节点入队
-
- 将 level_data 加入 data 中并清空 level_data
/** * 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) { vector > data; vector level_data; queue node_queue; int node_num = 1; TreeNode* temp = NULL; if (root) node_queue.push(root); while (!node_queue.empty()) { node_num = node_queue.size(); for (int i = 0; i < node_num; i++) { temp = node_queue.front(); node_queue.pop(); level_data.push_back(temp->val); if (temp->left) node_queue.push(temp->left); if (temp->right) node_queue.push(temp->right); } data.push_back(level_data); level_data.clear(); } return data; }};
获取更多精彩,请关注「seniusen」!