题解 | #从上往下打印二叉树#
从上往下打印二叉树
https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ #include <cstdio> #include <queue> #include <vector> class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> res; if (root == nullptr) return res; queue<TreeNode*> queue; queue.push(root); int nextLevel = 0; int toBePrinted = 1; while (!queue.empty()) { TreeNode *pTreeNode = queue.front(); res.push_back(pTreeNode->val); queue.pop(); toBePrinted--; if (pTreeNode->left != nullptr) { queue.push(pTreeNode->left); nextLevel++; } if (pTreeNode->right != nullptr) { queue.push(pTreeNode->right); nextLevel++; } if (toBePrinted == 0) { printf("\n"); toBePrinted = nextLevel; nextLevel = 0; } } return res; } };