按之字形顺序打印二叉树
2017-08-16 11:13
363 查看
题目:
分析:
使用两个栈。
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
分析:
使用两个栈。
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> > printBinaryTreeAsZhi( TreeNode* pRoot ) { if ( pRoot == NULL ) return vector<vector<int> >(); int current = 0; int next = 1; vector<vector<int> > result; vector<int> temp; stack<TreeNode*> treeStack[2]; treeStack[current].push( pRoot ); while ( !treeStack[0].empty() || !treeStack[1].empty() ) { TreeNode* pNode = treeStack[current].top(); treeStack[current].pop(); temp.push_back( pNode->val ); if ( current == 0 ) { if ( pNode->left != NULL ) { treeStack[next].push( pNode->left ); } if ( pNode->right != NULL ) { treeStack[next].push( pNode->right ); } } else { if ( pNode->right != NULL ) { treeStack[next].push( pNode->right ); } if ( pNode->left != NULL ) { treeStack[next].push( pNode->left ); } } if ( treeStack[current].empty() ) { result.push_back( temp ); temp.clear(); current = 1 - current; next = 1 - next; } } return result; } };
相关文章推荐
- 59按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- JAVA 按之字形顺序打印二叉树
- 《剑指offer》——按之字形顺序打印二叉树
- 剑指offer 61题 【树】按之字形顺序打印二叉树
- 剑指offer--面试题61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 《剑指offer》:[61]按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer--按之字形顺序打印二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树17:按之字形顺序打印二叉树
- 55.按之字形顺序打印二叉树
- 【剑指Offer学习】【面试题61:按之字形顺序打印二叉树】
- 【剑指Offer】面试题61:按之字形顺序打印二叉树
- 剑指Offer--061-按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 面试题68:按之字形顺序打印二叉树
- 剑指offer——面试题61:按之字形顺序打印二叉树
- 51.之字形顺序打印二叉树
- 按之字形顺序打印二叉树