按之字形顺序打印二叉树
2017-10-24 11:33
323 查看
题目描述:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路:
使用队列正序(从左到右)存储节点,每次循环将队列中节点值保存到一层,出对,然后将下一层节点按序入队。
设一个值辨别偶数行,偶数行翻转容器输出
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路:
使用队列正序(从左到右)存储节点,每次循环将队列中节点值保存到一层,出对,然后将下一层节点按序入队。
设一个值辨别偶数行,偶数行翻转容器输出
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> res; if (pRoot == nullptr) return res; queue<TreeNode*> past; past.push(pRoot); bool even = false; while (!past.empty()) { vector<int> floor; int size = past.size(); for (int i = 0; i < size; ++i) { TreeNode *tmp = past.front(); past.pop(); floor.push_back(tmp->val); if (tmp->left != nullptr) past.push(tmp->left); if (tmp->right != nullptr) past.push(tmp->right); } if (even) reverse(floor.begin(), floor.end()); even = !even; res.push_back(floor); } return res; } };
相关文章推荐
- 按之字形顺序打印二叉树
- 面试题61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer面试题61 按之字形顺序打印二叉树(java实现)
- 剑指offer--按之字形顺序打印二叉树
- 剑指offer-面试题61-按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 面试题61:按之字形顺序打印二叉树
- 【剑指Offer学习】【面试题61:按之字形顺序打印二叉树】
- 按之字形顺序打印二叉树Java实现
- 按之字形顺序打印二叉树(java版)
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 牛客网剑指offer-按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 《剑指offer》刷题笔记(树):按之字形顺序打印二叉树
- 剑指offer60题(按之字形顺序打印二叉树)
- 按之字形顺序打印二叉树