按之字形顺序打印二叉树
2017-08-16 11:13
405 查看
题目:
分析:
使用两个栈。
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
分析:
使用两个栈。
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; } };
相关文章推荐
- 【剑指offer】按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 【剑指Offer学习】【面试题61:按之字形顺序打印二叉树】
- 按之字形顺序打印二叉树
- 剑指offer——按之字形顺序打印二叉树
- 剑指Offer——按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer-面试题61:按之字形顺序打印二叉树
- 二叉树17:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 牛客网剑指offer-按之字形顺序打印二叉树
- 剑指offer—按之字形顺序打印二叉树
- 剑指offer-59.按之字形顺序打印二叉树