LeetCode刷题笔记第94题:二叉树的中序遍历
想法:
要完成二叉树的中序遍历,要先清楚中序遍历的规则,中序遍历是左根右。通过建立一个栈将递归遍历的二叉树中的元素存入栈中,当递归结束时,二叉树中的所有元素均在栈中。
# Definition for a binary tree node.
# 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]:
# 二叉树的中序遍历
# 设置dfs函数来递归中序遍历整个二叉树
def dfs(node):
# 通过判断根节点是否为空作为递归结束的判断
if not node:
return
# 中序遍历的顺序是左,根,右。以下三行调整顺序可以完成二叉树的先序遍历和后续遍历
dfs(node.left)
res.append(node.val)
dfs(node.right)
# 创建一个栈res存放中序遍历顺序的元素值
res = []
# 调用dfs函数
dfs(root)
# 返回中序遍历结果
return res