145. Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes' values.
Example:
Input:[1,null,2,3]
1 \ 2 / 3 Output:[3,2,1]
Follow up: Recursive solution is trivial, could you do it iteratively?
这道题和94,144题是一个系列,刚好是三种遍历方式。
94:https://blog.****.net/qq_39638957/article/details/89372757
144:https://blog.****.net/qq_39638957/article/details/89377357
145这道题是一个hard难度的。利用LinkedList的双向特性,可以转换为和preorder一样的题目
----------------------------------------------------------------------
这里画图对这三道题目进行总结:
代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
LinkedList<Integer> res = new LinkedList<Integer>();//双向链表
ArrayDeque<TreeNode> stack = new ArrayDeque<TreeNode>();
TreeNode cur = root;
while(cur!=null || !stack.isEmpty()){
if(cur!=null){
stack.push(cur);
res.addFirst(cur.val);
cur = cur.right;
}
else{
cur = stack.pop().left;
}
}
return res;
}
}