stack 栈的意义价值: 具有时间性,先进后出。 所以具有时间关联顺序的元素可以通过这个时间。 比如递归的后序遍历,先序遍历,
二叉树的按层次打印。 根据需求不同,在stack中暂时储存的元素单元也不同,元素的先后顺序也不同。
应用:对顺序有要求的数据。二叉树的处理。
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]
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
stack=list()
ans=list()
stack.append(root)
while stack:
node_cur=stack.pop()
if node_cur.val:
ans.append(node_cur.val)
if node_cur.left:
stack.append(node_cur.left)
if node_cur.right:
stack.append(node_cur.right)
return ans[::-1]