按之字形顺序打印二叉树
来源:互联网 发布:java.io.temp 编辑:程序博客网 时间:2024/06/02 02:22
题目:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
分析:
使用两个栈。
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; }};
阅读全文
0 0
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 牛客网 | 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 55.按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 【59】按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- Q61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- DeepLearning Trick
- 启动WebLogic时提示:此时不应有\java\jdk1.8.0_144\lib\dt.jar;
- mysql忘记数据库的root密码解决办法
- 第七次多校联合hdu6127
- 暑假很糟糕
- 按之字形顺序打印二叉树
- 5.S5PV210 时钟初始化汇编代码
- html dom动态改变字体
- TensorFlow深度学习,一篇文章就够了
- servlet 3.0 版本特性
- hdu Just do it 组合数规律
- Bootstrap Table使用整理(四)-工具栏
- LCD驱动-JZ2440
- Java内存模型和垃圾回收