给你二叉树的根节点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)
给定一个二叉树的根节点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)
给定一个二叉树的根节点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]
总结:对于二叉树的遍历求解,基本都是使用递归的方式。
递归,就是在运行的过程中调用自己。构成递归需具备的条件:
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
迭代和递归的区别:
从概念上讲:
简单地说,递归是重复调用函数自身实现循环;迭代是函数内某段代码实现循环。