設一棵二叉樹的結點結構爲(LLINK,INFO,RLINK),ROOT爲指向該二叉樹根結點的指針,p和q分別爲指向該二叉樹中任意兩個結點的指針,試編寫一個算法ANCESTOR(ROOT,p,q,r),

思路:在做這道題之前,如果知道怎麼求某個結點所有祖先結點就很好求了。在這個前提下,我們把p的祖先和q的祖先分別存放在兩個棧裏面,並且設p在q的左邊,那麼p的祖先一定也是q的祖先,然後對比兩個棧中的元素,第一個相等的元素就是最近的公共祖先結點,下面是示意圖, 把路徑都找到過後,就挨個出棧,並且比較。 代碼沒時間寫了,以後有時間再更吧,不過如果會寫某個結點所有祖先的那道題,這道題其實是一樣的。
相關文章
相關標籤/搜索