# Definition for a binary tree node.# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclassSolution:defpostorderTraversal(self, root):defpostorder(root, res):ifnot root:return
postorder(root.left, res)
postorder(root.right, res)
res.append(root.val)
res =[]
postorder(root, res)return res
# Definition for a binary tree node.classTreeNode:def__init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
inOrder =[2,1,4,3,5]
postOrder =[2,4,5,3,1]# 已知中序、后序打印前序defpreOrderPrint(r, start, end):if start > end:returnNone
i = start
while i < end and postOrder[r]!= inOrder[i]:
i +=1print(postOrder[r])
preOrderPrint(r -(end - i +1), start, i -1)
preOrderPrint(r -1, i +1, end)# 返回建立好的二叉树的根节点root
root = preOrderPrint(4,0,4)# preOrderPrint(n - 1, 0, n - 1) n为节点数
# Definition for a binary tree node.classTreeNode:def__init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
inOrder =[2,1,4,3,5]
preOrder =[1,2,3,4,5]# 已知中序、前序打印后序defpostOrderPrint(r, start, end):if start > end:returnNone
i = start
while i < end and preOrder[r]!= inOrder[i]:
i +=1
postOrderPrint(r +1, start, i -1)
postOrderPrint(r +(i - start)+1, i +1, end)print(preOrder[r])# 返回建立好的二叉树的根节点root
root = postOrderPrint(0,0,4)# postOrderPrint(0, 0, n - 1) n为节点数