之字形打印二叉树
2019-06-13 13:17
86 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zb_915574747/article/details/91842545
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
用两个栈层次遍历存储二叉树,一个从左节点到右节点存,一个从右向左存,每一层存完后加入到最后的结果中。
代码
[code]/* 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) return res; vector<int> tmp; stack<TreeNode *> s1; stack<TreeNode *> s2; s1.push(pRoot); while(!s1.empty()||!s2.empty()){ while(!s1.empty()){ TreeNode *t=s1.top(); s1.pop(); if(t->left) s2.push(t->left); if(t->right) s2.push(t->right); tmp.push_back(t->val); } if(tmp.size()!=0) res.push_back(tmp); tmp.clear(); while(!s2.empty()){ TreeNode *t=s2.top(); s2.pop(); if(t->right) s1.push(t->right); if(t->left) s1.push(t->left); tmp.push_back(t->val); } if(tmp.size()!=0) res.push_back(tmp); tmp.clear(); } return res; } };
相关文章推荐
- 【剑指offer-解题系列(60)】按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 按照之字形打印二叉树的节点
- 按Z字形打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树(剑指offer+队栈的应用)
- 按之字形打印二叉树
- 剑指offer61 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- Q61:按之字形顺序打印二叉树
- 剑指offer——面试题61:按之字形顺序打印二叉树
- 剑指offer_把二叉树打印成多行+之字形
- 按之字形顺序打印二叉树
- 剑指offer——面试题61:按之字形打印二叉树
- 《剑指offer》按之字形顺序打印二叉树
- 按之字形数据打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer--按之字形顺序打印二叉树
- 牛客网剑指offer-按之字形顺序打印二叉树
- 61.按之字形 ba66 顺序打印二叉树