同样是求最低公共祖先的题,在不同的树的条件下,思路有差别。
对于树的题,都同时可以同递归和非递归方法实现。
1.BST
最简单的类型,详见:235. Lowest Common Ancestor of a Binary Search Tree
时间O(logn),空间O(1)。
2.普通树,有父节点指针
先分别找到目标节点,再逆向走父节点指针取出路径,问题转而求两个链表的第一个公共节点。
时间O(logn),空间O(1)。
3.普通树,无父节点指针
详见:https://blog.csdn.net/lemonade13/article/details/104481898
法一:找路径,求两链表第一个公共节点
时间O(n),空间O(logn)。
法二:记录查找状态,求第一个满足要求的节点
时间O(n),空间O(1)。