简介:介绍树的前序、中序和后序遍历方法,并通过两种排序方式推导第三种遍历的顺序。
在计算机科学中,树的遍历方法有三种:前序遍历、中序遍历和后序遍历。这些遍历方法按照不同的顺序访问树中的节点。前序遍历先访问根节点,然后递归地访问左子树,最后递归地访问右子树。中序遍历先递归地访问左子树,然后访问根节点,最后递归地访问右子树。后序遍历先递归地访问左子树,然后递归地访问右子树,最后访问根节点。
当我们知道两种遍历的顺序时,我们可以通过以下步骤推导出第三种遍历的顺序:
class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef preorder_traversal(root):if not root: return []res = []stack = [root]while stack:node = stack.pop()res.append(node.val)if node.right: stack.append(node.right)if node.left: stack.append(node.left)return resdef inorder_traversal(root):if not root: return []res = []stack = []node = rootwhile stack or node:while node:stack.append(node)node = node.leftnode = stack.pop()res.append(node.val)node = node.rightreturn resdef postorder_traversal(root):if not root: return []res = []stack1 = [root]stack2 = []while stack1:node = stack1.pop()stack2.append(node)if node.left: stack1.append(node.left)if node.right: stack1.append(node.right)while stack2:\n