传送门
nowcoder
leetcode
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
C++ 代码 - nowcoder
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
|
class Solution { public: vector<vector<int>> Print(TreeNode* root) { vector<vector<int>> res; if (root == nullptr) return res;
queue<TreeNode*> q; q.push(root); while (!q.empty()) { int rowLength = q.size(); vector<int> temp; while (rowLength --) { TreeNode* node = q.front(); q.pop(); if (node == nullptr) continue; temp.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } if (temp.size() > 0) res.push_back(temp); } return res; } };
|
C++ 代码 - leetcode
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
|
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if (!root) return res;
queue<TreeNode*> q; q.push(root); while (!q.empty()) { int n = q.size(); vector<int> level; while (n --) { TreeNode* node = q.front(); q.pop(); level.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } res.push_back(level); } return res; } };
|
题目变形
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。
C++ 代码 - nowcoder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { if (root == nullptr) return vector<int> {}; vector<int> res; queue<TreeNode*> q; q.push(root); while (!q.empty()) { int rowLength = q.size(); while (rowLength --) { TreeNode* node = q.front(); q.pop(); if (node == nullptr) continue; res.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } } return res; } };
|
C++ 代码 - leetcode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public: vector<int> decorateRecord(TreeNode* root) { if (root == nullptr) return {};
vector<int> res; queue<TreeNode*> q; q.push(root); while (!q.empty()) { int rowLength = q.size(); while (rowLength --) { TreeNode* node = q.front(); q.pop(); if (node == nullptr) continue; res.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } } return res; } };
|