1. 程式人生 > >後序遍歷二叉樹(關鍵詞:樹/二叉樹/後序遍歷/後根遍歷/後序搜尋/後根搜尋)

後序遍歷二叉樹(關鍵詞:樹/二叉樹/後序遍歷/後根遍歷/後序搜尋/後根搜尋)

後序遍歷二叉樹

遞迴演算法

def postorderTraversal(root):
	f = postorderTraversal
	return f(root.left) + f(root.right) + [root.val] if root is not None else []

非遞迴演算法

def postorderTraversal(self, root):
	stack = [(root, False)]
	res = []

	while stack != []:
		node, seen = stack.pop()
		if node is not None:
			if seen is False:
				stack.extend([(node, True), (node.right, False), (node.left, False)])
			else:
				res.append(node.val)

	return res

參考文獻:

  1. 145. Binary Tree Postorder Traversal - LeetCode
  2. https://app.yinxiang.com/shard/s44/nl/9329661/19c13612-f7b8-4098-a046-1617f15ff02e。