题目
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:

输入:root = [1,null,2,3] 输出:[1,3,2]
示例 2:
输入:root = [] 输出:[]
示例 3:
输入:root = [1] 输出:[1]
提示:
- 树中节点数目在范围
[0, 100]内 -100 <= Node.val <= 100
思路
没啥好写的,重点是代码实现~
1.递归
2.迭代
代码
1.递归
# 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: Optional[TreeNode]) -> List[int]:
def dfs(node: Optional[TreeNode]) -> None:
if node is None:
return
dfs(node.left)
ans.append(node.val) # 这行代码放前面就是前序遍历,放后面就是后序遍历
dfs(node.right)
ans = []
dfs(root)
return ans
2.迭代
# 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: Optional[TreeNode]) -> List[int]:
res = []
stack = [] # 用于遍历时暂存节点
while stack or root:
# 一直往左走,并把节点存入stack
if root:
stack.append(root)
root = root.left
else: # 左边走到头了,可以开始从stack中取数存进res了~
tmp = stack.pop()
res.append(tmp.val)
root = tmp.right # 遍历右子树
return res
2188

被折叠的 条评论
为什么被折叠?



