按之字形顺序打印二叉树
2017-03-31 16:23
330 查看
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。/* 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> > ans; if (pRoot != NULL) { vector<int> tmp; stack<TreeNode*> st; stack<TreeNode*> stmp; st.push(pRoot); TreeNode* cur; int tag = 0; while (!st.empty()) { while (!st.empty()) { cur = st.top(); st.pop(); tmp.push_back(cur->val); if (tag == 0) {//从右往左 if (cur->left != NULL) { stmp.push(cur->left); } if (cur->right != NULL) { stmp.push(cur->right); } } else {//从左往右 if (cur->right != NULL) { stmp.push(cur->right); } if (cur->left != NULL) { stmp.push(cur->left); } } } tag = 1 - tag; ans.push_back(tmp); tmp.clear(); swap(st, stmp); } } return ans; } };
相关文章推荐
- PHP实现按之字形顺序打印二叉树的方法
- 剑指offer-----按之字形顺序打印二叉树(java版)
- (C++)剑指offer-59:按之字形顺序打印二叉树(树)
- 数据结构与算法分析笔记与总结(java实现)--二叉树17:按之字形顺序打印二叉树
- (剑指Offer)面试题61:按之字形顺序打印二叉树
- Q21_按之字形顺序打印二叉树
- 剑指offer系列之58:按之字形顺序打印二叉树
- 【剑指Offer】按之字形顺序打印二叉树
- 【59】按之字形顺序打印二叉树
- [剑指offer]按之字形顺序打印二叉树
- 按之字形顺序打印二叉树(剑指offer+队栈的应用)
- 按照之字形顺序打印二叉树
- 剑指offer——按之字形顺序打印二叉树
- 剑指offer 面试题61 按之字形顺序打印二叉树
- 剑指Offer——按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer(C++)——按之字形顺序打印二叉树
- 按之字形顺序打印二叉树