最大搜索二叉树的问题

  • 题目

给定一颗二叉树,已知其中所有节点的值都不一样,找到含有节点最多的搜索二叉子树,输出该子树总节点的数量。
牛客的练习题链接: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%

想请教一下~ 这种递归方法还有什么可以优化的地方吗~

#笔试题目#
全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务