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

溫馨提示×

python二叉樹遍歷代碼怎么寫

小億
85
2023-12-14 17:39:01
欄目: 編程語言

在Python中,可以使用遞歸或者迭代的方式來實現二叉樹的遍歷。以下是常見的三種二叉樹遍歷方式的代碼示例:

  1. 前序遍歷(Preorder Traversal):根節點 -> 左子樹 -> 右子樹

遞歸實現:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def preorderTraversal(root):
    if root is None:
        return []
    result = [root.val]
    result += preorderTraversal(root.left)
    result += preorderTraversal(root.right)
    return result

迭代實現:

def preorderTraversal(root):
    if root is None:
        return []
    stack = [root]
    result = []
    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. 中序遍歷(Inorder Traversal):左子樹 -> 根節點 -> 右子樹

遞歸實現:

def inorderTraversal(root):
    if root is None:
        return []
    result = []
    result += inorderTraversal(root.left)
    result.append(root.val)
    result += inorderTraversal(root.right)
    return result

迭代實現:

def inorderTraversal(root):
    if root is None:
        return []
    stack = []
    result = []
    while stack or root:
        if root:
            stack.append(root)
            root = root.left
        else:
            node = stack.pop()
            result.append(node.val)
            root = node.right
    return result
  1. 后序遍歷(Postorder Traversal):左子樹 -> 右子樹 -> 根節點

遞歸實現:

def postorderTraversal(root):
    if root is None:
        return []
    result = []
    result += postorderTraversal(root.left)
    result += postorderTraversal(root.right)
    result.append(root.val)
    return result

迭代實現:

def postorderTraversal(root):
    if root is None:
        return []
    stack = [root]
    result = []
    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
锦州市| 绵竹市| 镇安县| 高邑县| 顺平县| 田阳县| 新宁县| 东乡县| 山阳县| 永和县| 城口县| 正定县| 建始县| 井研县| 区。| 阿鲁科尔沁旗| 武夷山市| 任丘市| 黄石市| 邛崃市| 华池县| 东乡| 南皮县| 台东县| 满洲里市| 定襄县| 嘉峪关市| 三河市| 封开县| 宜阳县| 绥芬河市| 霍林郭勒市| 赤水市| 广州市| 彰化县| 资中县| 黔西| 鄂州市| 蓝田县| 富锦市| 普格县|