1405 最近共同祖先(函式專題)

2021-10-10 18:55:09 字數 624 閱讀 7461

如上圖所示,由正整數1, 2, 3, …組成了一棵無限大的二叉樹。從某乙個結點到根結

點(編號是1 的結點)都有一條唯一的路徑,比如從10 到根結點的路徑是(10, 5, 2, 1),

從4 到根結點的路徑是(4, 2, 1),從該結點到根結點的路徑上的所有結點稱為該結點的祖先。現在的問題就是,給定x 和y,求x和y的最近共同祖先,比如,10和4最近共同祖先是2,10和5的最近共同祖先是5。

定義遞迴函式

int common(int x, int y)

輸入

輸入只有一行,包括兩個正整數x 和y,這兩個正整數都不大於1000。

輸出

輸出只有乙個正整數,即x和y的最近共同祖先。

樣例輸入

10 4

樣例輸出

2

#include

#include

intmain()

intjd

(int x,

int y)

else

if(x>y)

else

}

二叉樹最近共同祖先

從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。求兩個不同結點ch1,ch2的最近共同祖先。第一行 擴充套件先序序列 第二行 ch1,ch2兩個不同結點值,用乙個空格間隔。abc de g f c fb include include include typedef struct n...

二叉樹 距離最近的共同祖先

分析總結 問題描述 查詢距離二叉樹中2個結點最近的共同祖先 使用者函式 template class elemtype binarytreenode findnearancient binarytree t,elemtype x,elemtype y 輔助函式 查詢從根結點到元素值為x的結點的路徑 ...

編號滿二叉樹 尋找任意兩結點的最近共同祖先

這是第一篇 技術性 部落格,希望以後越寫越多越好咯,本科生的期許hhh 這道題運用的主要性質就是對於滿二叉樹任意結點編號i 其parent 若有 為 i 2 關鍵在於對演算法的優化 一開始只想把 寫出來,於是用了 math.h 的pow函式,意圖先算出兩個結點的level,然後根據level 的差值...