二叉树的递归遍历
在做有关二叉树的编程题目时,二叉树的遍历经常会用到。此处做下记录。
二叉树的先序、中序、后序遍历使用递归实现时,代码实现比较简单,仅是根节点的访问顺序不同,使用python实现如下:
先序遍历:
先访问根节点,再依次递归遍历左子树和右子树,代码如下:
class Solution:
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
return [root.val] + self.inorderTraversal(root.left) + self.inorderTraversal(root.right)
中序遍历:
先遍历左子树,再访问根节点,再遍历右子树,代码如下:
class Solution:
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
后序遍历:
先遍历左子树,再遍历右子树,最后访问根节点,代码如下:
class Solution:
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
return self.inorderTraversal(root.left) + self.inorderTraversal(root.right) + [root.val]
总结:
每次递归时,只需判断结点是否存在,不存在时返回空,存在时根据相应的访问顺序打印出结点value值,由以上三种遍历方式可看出,只有[root.val]的连接位置不同。
注:代码参考链接:https://www.cnblogs.com/bjwu/p/9284534.html