问题描述
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
解决方法
中序遍历是二叉树遍历的一种方式,其遍历顺序为 “左子树-根节点-右子树” 。具体来说,对于任意一个节点,先遍历其左子树,然后访问该节点本身,最后再遍历其右子树。这个过程是递归的,即在遍历左子树和右子树时,同样按照中序遍历的方式进行。
- 首先需要定义一个列表用来存储输出内容
- 中序遍历为 左-中-右,因此定义一个函数,判断二叉树是否为空,若为空,返回;否则,开始遍历
- 先遍历二叉树的左子树,再将根的值填入,最后遍历右子树
- 最后调用这个函数
- 返回列表
代码示例
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
ans = []
def traversal(node):
if node is None:
return
traversal(node.left)
ans.append(node.val)
traversal(node.right)
traversal(root)
return ans