分行从上到下打印二叉树 — C++实现

tech2026-08-15  2

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

牛客网题目链接

解题思路

与从上到下打印二叉树一样,都是先存在队列里,然后从队列里取出。

只不过这里要区分每一层,因此我们在需要记住每一层有多少个元素,然后在每一层元素数量达到后切换下一层。

代码实现

class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector <vector <int> >res; vector <int> arr; if(!pRoot)return res; TreeNode *tmp; queue <TreeNode *> node; node.push(pRoot); int row=1,curr=0; while(!node.empty()){ tmp=node.front(),arr.push_back(tmp->val); row--,node.pop(); if(tmp->left)node.push(tmp->left),curr++; if(tmp->right)node.push(tmp->right),curr++; if(!row)res.push_back(arr),row=curr,curr=0,arr.clear();//切换下一层 } return res; } }; 运行时间:2ms 占用内存:376k
最新回复(0)