tree - 二叉树中的最大和 BST
问题描述
给定二叉树根,任务是返回任何子树的所有键的最大和,该子树也是二叉搜索树 (BST)。
假设 BST 定义如下:
- 节点的左子树仅包含键小于节点键的节点。
- 节点的右子树仅包含键大于节点键的节点。
- 左右子树也必须是二叉搜索树。
我试图通过在每个节点上检查它是否是 BST 然后找到它的总和来解决这个问题。
但我的方法是获得 TLE。解决这个问题的优化方法应该是什么?
解决方案
您的方法的时间复杂度为 O(n^2)。
您可以在计算该子树中所有元素的总和时尝试检查子树是否为 BST。所以这将只需要遍历给定的树,将复杂度降低到 O(n)。
后序遍历应该可以工作。
如果您在实施这种方法时感到卡住,这可能会有所帮助:https ://www.youtube.com/watch?v=Zz7R9I9j2kI
推荐阅读
- javascript - React 状态正在发生变化,但之前的部分数据仍显示在表格顶部
- facebook-graph-api - 如何在服务器端使用 instagram api 获取所有公共用户个人资料和发布详细信息
- python - Python tkinter 导入 * 缺少函数
- android - 使用 scrollToPosition() 方法时 Recycleview 添加监听器
- django - 在 Django 的管理员用户创建中添加电子邮件
- jms - 使用 IBM 的 mq-jms-spring 检测断开连接
- uwp - UWP:重新定义按钮样式
- powershell - 发送安全字符串以在 powershell 模块中运行
- python - 求图的最小度
- r - 有没有办法用在别处分配的名称的一部分来命名一个对象?工作室