leetcode_94 二叉树的中序遍历

51 阅读1分钟

要求

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

 

示例 1:

image.png

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

image.png

输入:root = [1,2]
输出:[2,1]

示例 5:

image.png

输入:root = [1,null,2]
输出:[1,2]

代码详解

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        result = []
        self.generate(root,result)
        return result
    
    def generate(self,root,result):
        if not root:
            return
        
        if root.left:
            self.generate(root.left,result)
        
        result.append(root.val)

        if root.right:
            self.generate(root.right,result)

image.png

重点题目

解题思路:我们知道树的先序遍历、中序遍历、后续遍历都是针对于根节点而言的,就是根节点加入搜索路径的顺序,中序遍历有左节点先左节点入内,没有左节点,将根节点加入到路径中,最后是右节点。