本文用python3实现二叉树的前序、中序、后序遍历。
完整代码链接:https://github.com/toanoyx/BasicAlgorithm/tree/master/tree
from typing import TypeVar, Generic, Generator, Optional
T = TypeVar("T")
class TreeNode(Generic[T]):
def __init__(self, value: T):
self.val = value
self.left = None
self.right = None
# 前序遍历
def preOrder(root: Optional[TreeNode[T]]) -> Generator[T, None, None]:
if root:
yield root.val
yield from preOrder(root.left)
yield from preOrder(root.right)
# 中序遍历
def inOrder(root: Optional[TreeNode[T]]) -> Generator[T, None, None]:
if root:
yield from inOrder(root.left)
yield root.val
yield from inOrder(root.right)
# 后序遍历
def postOrder(root: Optional[TreeNode[T]]) -> Generator[T, None, None]:
if root:
yield from postOrder(root.left)