530.二叉搜索树的最小绝对差
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:1h
思路:由于是二叉搜索树,所以中序遍历是递增的序列,只需要相邻的两个元素相减即可。用一个pre指针存放之前处理的节点,一个变量存放最小绝对值。
代码:
501.二叉搜索树中的众数
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:1h
思路:由于是二叉搜索树,所以中序遍历是递增的序列,只需要比较相邻的两个元素即可,用一个容器存放结果(因为可能有相同次数的元素),相等则次数加一,大于当前最大次数,则清空容器中所有元素,然后将当前众数存入容器。
代码:
236. 二叉树的最近公共祖先
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1.5h
思路:采用后序遍历,方便自底向上查找公共祖先。最近公共祖先两种情况:一,p和q分别在不同的子树,当一个节点发现左右子树分别包含其中一个时,就是最近公共祖先;二,p和q在同一子树,此时p或q自身就是公共祖先。两个情况处理是一样的,都是遇到p或q就直接返回。递归的返回值是树节点类型,中止条件是遇到p或者q或者为空时,返回p或q或空指针。逻辑处理是获取左右子树返回的指针,两个指针存在则当前节点就是最近公共祖先;两个指针都为空,表示当前节点为根的子树没有p和q的公共祖先;两个指针只有一个存在的话,该节点是最近公共祖先的祖先或父母,返回不为空的指针即可。
代码: