二叉树遍历

一、中序遍历

def inorderTraversal(root):
    if not root:
        return []
    return inorderTraversal(root.left) + [root.val] + inorderTraversal(root.right)

def inorderTraversal(root):
    stack = []
    sol = []
    curr = root
    while stack or curr:
        if curr:
            stack.append(curr)
            curr = curr.left
        else:
            curr = stack.pop()
            sol.append(curr.val)
            curr = curr.right
    return sol

二、前序遍历

def preorderTraversal(root):
    if not root:
        return []
    return [root.val] + inorderTraversal(root.left) + inorderTraversal(root.right)

def preorderTraversal(root):
    stack = []
    sol = []
    curr = root
    while stack or curr:
        if curr:
            sol.append(curr.val)
            stack.append(curr.right)
            curr = curr.left
        else:
            curr = stack.pop()
    return sol

三、后序遍历

def postorderTraversal(root):
    if not root:
        return []
    return inorderTraversal(root.left) + inorderTraversal(root.right) + [root.val]

def postorderTraversal(root):
    stack = []
    sol = []
    curr = root
    while stack or curr:
        if curr:
            sol.append(curr.val)
            stack.append(curr.left)
            curr = curr.right
        else:
            curr = stack.pop()
    return sol[::-1]

 

posted @ 2019-10-10 10:49  尘世中一个迷途小书童  阅读(100)  评论(0编辑  收藏  举报