链接: https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
题意
解法
有一种比较直观的想法是对于每个节点,判断它的左右子树是否分别包含p和q
但是这样就需要进行两次遍历 时间复杂度为N^2
需要进行优化
核心思想还是dfs
每次处理左节点和右节点
如果两者分别包含p或者q
则root一定是lca
否则返回左右节点中同时包含p和q的节点
优化后的代码十分简洁美丽
代码
原始做法
1 | class Solution { |
优化后
1 | class Solution { |