题解 | #二叉树的后序遍历# #非DFS,挺难的
二叉树的后序遍历
https://www.nowcoder.com/practice/1291064f4d5d4bdeaefbf0dd47d78541
#coding:utf-8
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型一维数组
#
class Solution:
def __init__(self):
self.path = []
self.stack = []
def postorderTraversal(self , root ):
# write code here
#dfs
#self.dfs(root)
#travel
self.travel(root)
print ("Path: ", self.path)
return self.path
def travel(self, node):
if node == None:
return
last = node
self.stack.append(node)
while len(self.stack) > 0:
peek = self.stack[-1]
if peek.left != None and peek.left != last and peek.right != last:
self.stack.append(peek.left)
elif peek.right != None and peek.right != last:
self.stack.append(peek.right)
else:
#last = self.stack.pop()
self.path.append(self.stack.pop().val)
last = peek
return
def dfs(self, node):
if node == None:
return
self.dfs(node.left)
self.dfs(node.right)
self.path.append(node.val)
return


查看19道真题和解析