94. 二叉树的中序遍历
题目地址
描述为中序遍历一个二叉树
对树这块不太熟悉,所以直接参考了depseek。
class Solution(object):
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
result = []
self.inorder(root, result)
return result
def inorder(self, node, result):
if not node:
return
self.inorder(node.left, result)
result.append(node.val)
self.inorder(node.right, result)
总结心得:
学习了树的使用,包括左右节点,val获取值等
学习了递归的使用,python中递归一定要用self.因为调用的是类里的一个成语函数,所以必须加self.,不然编译器会在全文检索导致出错。还学习了简单的递归实现,包括设置结束的判定,在本题中则为线遍历完左节点后再遍历右节点,直到没有节点为止。
学习了树的遍历方式:
- 前序遍历(Preorder Traversal)
顺序:根节点 → 左子树 → 右子树 - 中序遍历(Inorder Traversal)
顺序:左子树 → 根节点 → 右子树 - 后序遍历(Postorder Traversal)
顺序:左子树 → 右子树 → 根节点 - 层序遍历(Level Order Traversal)
顺序:逐层从左到右访问节点
同时还有一种通过迭代实现的方法
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
result = []
stack = []
current = root
while current or stack:
# 遍历到最左节点
while current:
stack.append(current)
current = current.left
# 弹出栈顶元素并访问
current = stack.pop()
result.append(current.val)
# 转向右子树
current = current.right
return result
迭代方法使用栈来模拟递归的过程,显式地维护调用栈。
465

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



