如上圖所示,由正整數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 的差值...