剑指offer——32.2 把二叉树打印成多行 发表于 2020-02-15 | 分类于 算法 , 剑指offer | 字数统计: 290 | 阅读时长 ≈ 1 剑指offer刷题 32.2 把二叉树打印成多行NowCoder 题目描述和上题几乎一样。 解题思路1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556/*基于层序遍历一个队列依次装入节点设置两个变量 一个用于记录当前层的数量currNum 初始为1:表示当前加入了根节点:每次装载数据后-- 为零时更新 currNum = nextNum; nextNum = 0;一个用于记录下一层的数量nextNum:判断每一次数据的左右节点时 存在则++**//** * 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<vector<int>> printFromTopToBottom(TreeNode* root) { vector<vector<int>> vRes; if(!root) return vRes; vector<int> vTmp; //暂存每一层数据 queue<TreeNode*> que; //BFS que.push(root); int currNum = 1, nextNum = 0; while(!que.empty()) { auto top = que.front(); //记录对头 que.pop(); //出对 //左右节点 入队列 if(top->left) { que.push(top->left); nextNum ++; } if(top->right) { que.push(top->right); nextNum ++; } //加入打印数据 同时当前层数据数-1 vTmp.push_back(top->val); currNum --; if(currNum <= 0) { currNum = nextNum; vRes.emplace_back(vTmp); vTmp.clear(); nextNum = 0; } } return vRes; }}; 创作不易,欢迎打赏! 打赏 微信支付 支付宝 -------------本文结束感谢您的阅读-------------