剑指offer59:按之字形顺序打印二叉树:[[1], [3…
2019-08-31 07:13:30来源:博客园 阅读 ()
剑指offer59:按之字形顺序打印二叉树:[[1], [3,2], [4,5,6,7]]
1 题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。2 思路和方法
先给定一个二叉树的样式:
输出的样式是:[[1], [3,2], [4,5,6,7]]。包含以下信息: (1)每一层所包含的树节点;(2)偶数层的树节点需倒序。
思路: 面对要求的偶数层倒序,亦有两种解题思路,第一种是:获取到所有节点的值后,将偶数层的节点值倒序(先存right,再存left实现倒序)。第二种则是在获取节点的值的时候就倒序存入。定义两堆栈stack1和stack2,在遍历当前层节点的同时!stack1.empty() TreeNode *data=stack1.top();,存储下一层的节点(stack2.push(data->right),stack2.push(data->left)),以此类推,!stack2.empty() TreeNode *data=stack2.top();,存储下一层的节点(stack1.push(data->left),stack2.push(data->right))。
3 C++核心代码
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 }; 10 */ 11 class Solution { 12 public: 13 vector<vector<int> > Print(TreeNode* pRoot) { 14 vector<vector<int>> result; 15 if(pRoot==nullptr) 16 return result; 17 stack<TreeNode*> stack1,stack2;//分别存奇数和偶数层 18 stack1.push(pRoot); 19 while(!stack1.empty() || !stack2.empty()){ 20 if(!stack1.empty()){ 21 vector<int> temp; 22 while(!stack1.empty()){ 23 TreeNode *data=stack1.top(); 24 stack1.pop(); 25 temp.push_back(data->val); 26 if(data->left!=nullptr) 27 stack2.push(data->left); 28 if(data->right!=nullptr) 29 stack2.push(data->right); 30 } 31 result.push_back(temp); 32 } 33 if(!stack2.empty()){ 34 vector<int> temp; 35 while(!stack2.empty()){ 36 TreeNode *data=stack2.top(); 37 stack2.pop(); 38 temp.push_back(data->val); 39 if(data->right!=nullptr) 40 stack1.push(data->right); 41 if(data->left!=nullptr) 42 stack1.push(data->left); 43 } 44 result.push_back(temp); 45 } 46 } 47 return result; 48 } 49 };View Code
参考资料
https://blog.csdn.net/u010005281/article/details/79759926
原文链接:https://www.cnblogs.com/wxwhnu/p/11434545.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java字符串定义及常用方法
下一篇:洛谷 P1004 方格取数
- 剑指offer笔记面试题1----赋值运算符函数 2019-10-18
- 剑指offer65:矩阵中的路径(二维数组,二分查找) 2019-09-02
- 剑指offer62:二叉搜索树的第k个结点,二叉搜索树【左边的元 2019-08-31
- 剑指offer64:滑动窗口的最大值 2019-08-31
- 剑指offer50:数组中重复的数字 2019-08-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash