題目:
輸入一棵數(shù)的兩個結(jié)點,返回這兩個結(jié)點的最低公共祖先
解法:
分析:如果是二叉樹,可以使用遞歸的思路,從根結(jié)點開始,如果兩個結(jié)點分布在左右兩顆子樹上,則即為所求;如果都在左子樹,遞歸搜索左子樹;如果都在右子樹,遞歸搜索右子樹。
如果是一般的樹,通過保存根節(jié)點到輸入結(jié)點的路徑,然后求這兩條路徑的最后一個公共子節(jié)點即可。問題的關(guān)鍵就在于求得這個路徑:從根節(jié)點開始,深度優(yōu)先遍歷根節(jié)點的所有子節(jié)點,如果遇到了輸入結(jié)點,即求得了路徑。