二叉树算法的递归遍历
递归算法三要素:
1.确定递归函数的参数和返回值:
确定哪些函数是递归过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。
2.确定终止条件:
栈溢出的错误,就是没写终止条件和终止条件写的不对。
3.确定单层递归的逻辑:
确定每一层递归需要处理的信息。
Python
1.二叉树的前序遍历
class Solution(object):
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
left=self.preorderTraversal(root.left)
right=self.preorderTraversal(root.right)
return [root.val]+left+right
2.二叉树的后序遍历
class Solution(object):
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
left=self.postorderTraversal(root.left)
right=self.postorderTraversal(root.right)
return left+right+[root.val]
3.二叉树的中序遍历
class Solution(object):
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
left=self.inorderTraversal(root.left)
right=self.inorderTraversal(root.right)
return left+[root.val]+right