博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 145. 二叉树的后序遍历
阅读量:4593 次
发布时间:2019-06-09

本文共 2084 字,大约阅读时间需要 6 分钟。

给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]

1
\
2
/
3

输出: [3,2,1]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal

迭代:

1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     vector
postorderTraversal(TreeNode* root) {13 vector
ans;14 if(!root) return ans;15 stack
nodeStack1,nodeStack2;16 TreeNode* node;17 nodeStack1.push(root);18 while( !nodeStack1.empty())19 {20 node = nodeStack1.top();21 nodeStack1.pop();22 nodeStack2.push(node);23 if(node->left) 24 nodeStack1.push(node->left);25 if(node->right)26 nodeStack1.push(node->right);27 }28 29 while(!nodeStack2.empty())30 {31 ans.push_back(nodeStack2.top()->val);32 nodeStack2.pop();33 }34 35 return ans;36 }37 };

 

优化:来源:

class Solution {public:    vector
postorderTraversal(TreeNode* root) { vector
ans; if(root == NULL){ return ans; } stack
q; TreeNode *p = root; TreeNode *pLast = NULL; while(p){ q.push(p); p = p->left; } while(!q.empty()){ p = q.top(); q.pop(); // 右无或者右看过,可以看中 if(!p->right || p->right==pLast){ ans.push_back(p->val); pLast = p; }else{ // 进入右 q.push(p); p = p->right; while(p){ q.push(p); p = p->left; } } } return ans; }};

 

转载于:https://www.cnblogs.com/jj81/p/11487437.html

你可能感兴趣的文章
洛谷P1390 公约数的和 [2017年6月计划 数论12]
查看>>
2016计蒜之道复赛A 百度地图的实时路况
查看>>
How to get md5 and SHA1 in objective c (iOS sdk)
查看>>
代动词
查看>>
虚拟私有云(Virtual Private Cloud,专有网络)配置方式总结
查看>>
bayer格式
查看>>
7.19考后总结
查看>>
2019-03-15 使用Request POST获取CNABS网站上JSON格式的表格数据,并解析出来用xlwt写到Excel中...
查看>>
用Latex写学术论文: IEEE Latex模板和文档设置(\documentclass)
查看>>
HSmartWindowControl 之 显示图像
查看>>
PostCSS一种更优雅、更简单的书写CSS方式
查看>>
LaTeX实验报告模板
查看>>
实例讲解Linux系统中硬链接与软链接的创建
查看>>
JDK安装、变量、变量的分类
查看>>
[POI2000] 最长公共子串
查看>>
【山东省选2008】郁闷的小J 平衡树Treap
查看>>
【linux报错】安装好虚拟机后,挂载光盘报错:mount:you must specify the filesystem type...
查看>>
由浅入深:自己动手开发模板引擎——解释型模板引擎(三)
查看>>
.NET Core TDD 前传: 编写易于测试的代码 一 -- 缝
查看>>
POJ——T3417 Network
查看>>