最大搜索二叉树的问题
- 题目
给定一颗二叉树,已知其中所有节点的值都不一样,找到含有节点最多的搜索二叉子树,输出该子树总节点的数量。
牛客的练习题链接:https://www.nowcoder.com/practice/380d49d7f99242709ab4b91c36bf2acc?tpId=101&&tqId=33234&rp=2&ru=/activity/oj&qru=/ta/programmer-code-interview-guide/question-ranking
- 我的解答
def f(node): if not node: return True, -float('inf'), float('inf'), 0 flag_left, max_left, min_left, cnt_left = f(node.left) flag_right, max_right, min_right, cnt_right = f(node.right) if flag_left and flag_right and max_left < node.val < min_right: return True, max(max_right, node.val), min(min_left, node.val), cnt_left + cnt_right + 1 return False, -1, -1, max(cnt_left, cnt_right) flag, _, _, cnt = f(root) print(cnt)
- 提交结果
您的代码已保存
运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
case通过率为75.00%
想请教一下~ 这种递归方法还有什么可以优化的地方吗~
#笔试题目#