目标:根据我的经验,刷题可以迅速提升某语言的编程技巧,同时熟悉常见语法.
prompt: 代码 + 简单说下以上代码涉及的python语法知识点。可以出哪些面试题。
2025-02-20
104. 二叉树的最大深度
# 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 maxDepth(self, root: Optional[TreeNode]) -> int:
if root is None:
return 0
return max(self.maxDepth(root.left),self.maxDepth(root.right))+1
105. 从前序与中序遍历序列构造二叉树
# 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 buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
if not preorder: # 空节点
return None
left_size = inorder.index(preorder[0]) # 左子树的大小 // 元素无重复
# preorder根-左-右 # inorder 左-根-右
left = self.buildTree(preorder[1: 1 + left_size], inorder[:left_size])
right = self.buildTree(preorder[1 + left_size:], inorder[1 + left_size:])
return TreeNode(preorder[0], left, right) # 根-左-右 参考__init__构建树
-
列表的index(value)和切片截取方法.和go切片截取语义一致。都是左闭右开.
list[start:end]表示从索引start开始到索引end结束(不包含end)的子列表list[start:]表示从索引start开始到列表末尾的子列表。list[:end]表示从列表开头到索引end结束(不包含end)的子列表。- 代码中列表切片被用于分割前序和中序遍历结果,分别得到左子树和右子树的遍历序列,以便递归构建子树。
-
理解None
# Python 中使用 None
x = None # 将变量 x 赋值为 None,表示 x 当前没有值
if x is None:
print("x 是 None") # 输出:x 是 None
if not x: # None 在布尔上下文中为 False
print("x 在布尔上下文中为 False") # 输出:x 在布尔上下文中为 False
def my_function():
pass # 函数没有显式返回值
result = my_function()
print(result is None) # 输出:True,函数默认返回 None