剑指offer(56)-按之字形顺序打印二叉树
2016-07-12 15:44
537 查看
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。代码
/* 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>> result; stack<TreeNode*> stack1,stack2; bool direction = true; if (pRoot != NULL) { stack1.push(pRoot); } struct TreeNode *node; while (!stack1.empty() || !stack2.empty()) { vector<int> data; if (!stack1.empty()) { while (!stack1.empty()) { node = stack1.top(); stack1.pop(); data.push_back(node->val); if (node->left != NULL) { stack2.push(node->left); } if (node->right != NULL) { stack2.push(node->right); } } result.push_back(data); }else if (!stack2.empty()){ while (!stack2.empty()) { node = stack2.top(); stack2.pop(); data.push_back(node->val); if (node->right != NULL) { stack1.push(node->right); } if (node->left != NULL) { stack1.push(node->left); } } result.push_back(data); } } return result; } };
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C++基于栈实现铁轨问题
- C语言单链队列的表示与实现实例详解
- C语言二叉树的非递归遍历实例分析
- 浅析C语言中堆和栈的区别
- C语言栈的表示与实现实例详解
- 使用C语言构建基本的二叉树数据结构
- C语言实现颠倒栈的方法
- 一波二叉树遍历问题的C++解答实例分享
- 举例讲解C语言程序中对二叉树数据结构的各种遍历方式
- C++非递归队列实现二叉树的广度优先遍历
- 算法系列15天速成 第十天 栈
- mysql 队列 实现并发读
- PHP实现的线索二叉树及二叉树遍历方法详解
- C#队列Queue用法实例分析
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解