剑指offer:按之字形顺序打印二叉树
2016-05-05 09:58
288 查看
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
/* 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> >res; if (pRoot == NULL){ return res; } stack<TreeNode*> stk[2]; int cur = 0; int next = 1; int index = 1; vector<int> level; stk[cur].push(pRoot); while (!stk[cur].empty()){ TreeNode* top = stk[cur].top(); stk[cur].pop(); level.push_back(top->val); if (index % 2 == 1){ if (top->left){ stk[next].push(top->left); } if (top->right){ stk[next].push(top->right); } } else{ if (top->right){ stk[next].push(top->right); } if (top->left){ stk[next].push(top->left); } } if (stk[cur].empty()){ swap(cur, next); index++; res.push_back(level); level.clear(); } } return res; } };
相关文章推荐
- nodejs package.json解释
- JSP不加载缓存
- 使用Gson解析复杂的json数据
- JQuery.Ajax()的data参数类型
- JavaScript-----判断Caps Lock是否开启
- Ubuntu, Mac 下 Web 开发环境搭建:node.js, golang 与 revel 配置安装
- jquery实现全选功能
- js中正则表达式
- 【U3D】Behavior Designer中的复合节点(Composites Node)
- 整理了一份React-Native学习指南
- js中return false(阻止)的用法
- JavaScript权威指南 第七章 数组
- jquery.ajax之beforeSend用法
- CSS3 选择器 文字阴影
- 前端调试效率低?试试这10个“Chrome开发者工具”使用技巧
- angularJs中的form指令的使用
- JavaScript中的类型转换
- javascript弹出对话框的几种形式
- JavaScript学习总结(三)——逻辑And运算符详解
- json