最大搜索二叉树的问题
- 题目
给定一颗二叉树,已知其中所有节点的值都不一样,找到含有节点最多的搜索二叉子树,输出该子树总节点的数量。
牛客的练习题链接: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%
想请教一下~ 这种递归方法还有什么可以优化的地方吗~
#笔试题目#