同樣是求最低公共祖先的題,在不同的樹的條件下,思路有差別。
對於樹的題,都同時可以同遞歸和非遞歸方法實現。
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)。