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

python求解二叉树前序中序后序遍历,第1张

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. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
那迭代是个啥?

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

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

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5625037.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存