91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何實現TreeNode的非遞歸遍歷

小樊
82
2024-09-03 12:07:16
欄目: 編程語言

要實現TreeNode的非遞歸遍歷,可以使用迭代方法和棧數據結構。這里以二叉樹的前序遍歷、中序遍歷和后序遍歷為例進行說明。

首先定義一個簡單的TreeNode類:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
  1. 前序遍歷(根 -> 左 -> 右)
def preorder_traversal(root):
    if root is None:
        return []

    stack, result = [root], []

    while stack:
        node = stack.pop()
        result.append(node.val)

        if node.right:
            stack.append(node.right)
        if node.left:
            stack.append(node.left)

    return result
  1. 中序遍歷(左 -> 根 -> 右)
def inorder_traversal(root):
    if root is None:
        return []

    stack, result = [], []
    current = root

    while current or stack:
        while current:
            stack.append(current)
            current = current.left

        current = stack.pop()
        result.append(current.val)
        current = current.right

    return result
  1. 后序遍歷(左 -> 右 -> 根)
def postorder_traversal(root):
    if root is None:
        return []

    stack, result = [root], []

    while stack:
        node = stack.pop()
        result.append(node.val)

        if node.left:
            stack.append(node.left)
        if node.right:
            stack.append(node.right)

    return result[::-1]  # 反轉列表得到正確的后序遍歷順序

這樣就實現了二叉樹的非遞歸遍歷。注意這里的遍歷順序與遞歸遍歷相同,只是實現方式不同。

0
甘德县| 彝良县| 花莲县| 耒阳市| 鄢陵县| 广安市| 万山特区| 宜宾县| 松滋市| 庆云县| 苏州市| 同心县| 宜黄县| 海林市| 大厂| 弋阳县| 法库县| 龙陵县| 涟水县| 灵武市| 漳州市| 元朗区| 舒城县| 福泉市| 库尔勒市| 项城市| 双牌县| 乃东县| 达孜县| 平安县| 城固县| 安康市| 金沙县| 乐山市| 昭觉县| 和平县| 鄂州市| 侯马市| 互助| 根河市| 静海县|