題目
- 輸入二叉樹中的兩個結點,輸出這兩個結點在樹中最低的共同父結點
- 二叉樹中兩個節點的距離
分析
- 還是遞歸吧:
思路: 如果這兩個節點不在同一個子樹下面,那么這棵樹的根節點就是他們的共同最低父節點。
如果兩個都在右子樹,那么以右子樹的最上面的那個節點作為根節點,重新進行判斷,遞歸調用。
同理兩個都在左子樹,則方法同上。 也就是說,最終的結果分別只有三種情況,一個節點在右子樹,一個節點在左子樹。兩個節點都在右子樹,兩個節點都在左子樹。
如果是第一種情況,那么當前的節點就是他們最低的公共節點,左右都在左子樹,或者在右子樹,那么就遞歸調用。
那么問題就變成了如何判斷是否在同一子樹。