zoukankan      html  css  js  c++  java
  • 二叉树遍历

    一、中序遍历

    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]
  • 相关阅读:
    std::erase总结
    C++控制台应用程序运行控制台闪退
    判断当前进程是否已经打开C++
    获取当前系统语言C++
    VS中设置Qt多语言界面
    QString的功能
    安装mysql5.6
    centos6.9 PHP的编译安装并连接nginx
    centos6删除nginx
    centos6删除mysql安装
  • 原文地址:https://www.cnblogs.com/kingshine007/p/11646478.html
Copyright © 2011-2022 走看看