栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python求解二叉树前序/中序/后序遍历

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python求解二叉树前序/中序/后序遍历

二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历 1.二叉树的前序遍历

给你二叉树的根节点root,返回它节点值的前序遍历
示例1:


输入:root=[1,null,2,3]
输出:[1,2,3]
二叉树的前序遍历即为:先根节点,再左节点,最后再右节点。可以使用递归的方式求解

class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        if root==None:
            return []
        else:
            return [root.val]+self.preorderTraversal(root.left)+self.preorderTraversal(root.right) 
2.二叉树的中序遍历

给定一个二叉树的根节点root,返回它的中序遍历。
示例2:


输入:root=[1,null,2,3]
输出:[1,3,2]
二叉树的中序遍历即为:先左节点,再根节点,最后再右节点。可以使用递归的方式求解

class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        if root==None:
            return []
        else:
            return self.inorderTraversal(root.left)+[root.val]+self.inorderTraversal(root.right) 
3.二叉树的后序遍历

给定一个二叉树的根节点root,返回它的后序遍历。
示例3:


输入:root=[1,null,2,3]
输出:[3,2,1]
二叉树的后序遍历即为:先左节点,再右节点,最后再根节点。可以使用递归的方式求解

class Solution:
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        if root==None:
            return []
        else:
            return self.postorderTraversal(root.left)+self.postorderTraversal(root.right)+[root.val]

总结:对于二叉树的遍历求解,基本都是使用递归的方式。

递归到底是个啥?

递归,就是在运行的过程中调用自己。构成递归需具备的条件:

  1. 子问题须与原始问题为同样的事,且更为简单;
  2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
那迭代是个啥?

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。

那递归和迭代有什么区别呢?

迭代和递归的区别:
从概念上讲:

  • 递归就是指程序调用自身的编程思想,即一个函数调用本身;
  • 迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。

简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/618962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号