核心思路:中序遍历 BST 得到升序序列 二叉搜索树的中序遍历(左 → 根 → 右)天然产生一个升序数组。 因此只需对二叉树做中序遍历,检查遍历结果是否严格递增即可。 方法一:递归中序遍历 + prev 指针 用一个全局/外部变量 prev 记录上一个访问的节点值, 遍历时比较:如果当前节点值 <= prev,则不是 BST。 方法二:合法区间约束(更推荐) 遍历每个节点时,记录它合法的取值区间 [minVal, maxVal]: - 左子节点必须在 (minVal, root.val) 区间 - 右子节点必须在 (root.val, maxVal) 区间 递归过程中一旦越界立即返回 false。 区间法的优势:不需要额外数组,O(1) 空间,边判断边剪枝。
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
def validate(node, min_val, max_val):
if not node:
return True
# 当前节点值必须落在 (min_val, max_val) 开区间内
if node.val <= min_val or node.val >= max_val:
return False
# 左子树节点值上限是 root.val,右子树节点值下限是 root.val
return validate(node.left, min_val, node.val) and \
validate(node.right, node.val, max_val)
return validate(root, float('-inf'), float('inf'))
目标:对比两大框架的设计哲学——OpenClaw 的"网关优先"vs Hermes 的"自进化优先"。理解各自适用场景,尝试在本地同时跑通两个框架,完成同一个任务(如日程管理),对比输出差异。
目标:理解 MCP 的 Client/Server 架构,手动搭建一个本地 MCP Server 并连接到文件系统。重点研究 MCP 的安全机制(身份认证+令牌管理),搞清楚它如何实现"放权但不失控"。
目标:参考 Router + 执行 Agent + Summary Agent 架构,用 OpenClaw subagent 机制实现一个简单的多 Agent 协作系统。例如:输入一道算法题,Router 分发给"刷题 Agent"和"解释 Agent",Summary Agent 汇总输出。
目标:阅读新加坡国立大学等机构联合发布的 AI Agent 记忆综述论文,理解 KV Cache、RAG、MemGPT 等技术的关系,提出自己对"统一记忆架构"的思考。涉及 DES 场景下如何让 Agent 记住用户偏好。
目标:在 Ubuntu 服务器上搭建 MCP Server,通过 OpenClaw 的 MCP 工具连接服务器文件系统或数据库,完成端到端测试。记录关键配置步骤和踩坑指南,形成可复用的操作手册。