Day117 | 灵神 | 二叉树 | 二叉搜索树的最大键值和
Day117 | 灵神 | 二叉树 | 二叉搜索树的最大键值和
1373.二叉搜索树的最大键值和
1373. 二叉搜索子树的最大键值和 - 力扣(LeetCode)
关联题目:
98. 验证二叉搜索树 - 力扣(LeetCode),这道题的后序遍历和本题一个思路
思路:
hard题,思路倒也简单,就是后序遍历,判断这棵树是不是二叉树并且自底向上计算这棵子树的和,然后更新最大值
但是虽说思路简单,代码却没有那么好写….
笔者第一次写是用bool返回子树是否是二叉搜索树,只要左右子树是,那就把本节点的值给加上了,所以出错了,因为左右子树都是二叉搜索树不能说算上当前结点也是二叉搜索树
正确的想法应该是自底向上返回左右子树最大值和最小值,从而判断当前结点是不是二叉搜索树
只要不是二叉搜索树,那和就是0,只要是那就是左右子树之和再加本节点的值,再和当前的最大值取一个最大值,就是结果,然后继续向上返回
所以递归函数意义就是向上返回左右边界的当前子树的和,左右边界用来判断是否二叉搜索树,和用来找最大值
完整代码:
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Darlingの妙妙屋!
评论