乙個順序儲存的完全二叉樹:1
/ \
2 3
/ \ / \
4 5 6 7
...任意給定兩結點的編號,求兩結點最近的公共祖先。
input
每組資料一行,為空格隔開的兩個數i和j,皆為32位有符號正整數
output
每組資料對應一行,為編號為i和j的結點的最近公共祖先的編號
sample input
4 54 7
sample output
21
hint
完全二叉樹,思路很簡單,我們先讓大的數向小的數靠攏,一直減小到兩個數在樹的同一層
然後兩個數一起往上找祖先,找到相同的就退出迴圈,因為任意兩個數的最遠的祖先一定是1,所以不用擔心找不到死迴圈的可能
#include #include #include #include #include #include #include #include #include #include const double eps=1e-8;
const double pi=acos(-1.0);
using namespace std;
int main()
while(m!=n)
printf("%d\n",n);
}return 0;
}
ACM A 二叉樹結點公共祖先
乙個順序儲存的完全二叉樹 1 2 3 4 5 6 7 任意給定兩結點的編號,求兩結點最近的公共祖先。每組資料一行,為空格隔開的兩個數i和j,皆為32位有符號正整數 每組資料對應一行,為編號為i和j的結點的最近公共祖先的編號 4 5 4 7 2 1程式設計的時候注意考慮所有情況,要不可能一直在迴圈裡導...
求二叉樹某個結點的祖先
考試做到這一題,當時寫的很亂,這讓我很煩,題目就是在二叉樹查詢某個值的結點,如果找到則輸出該節點的所有祖先,那我當時想到的就是用後序遍歷的非遞迴演算法,如果找到的話,棧中的所有元素就是該節點的祖先,不過後序遍歷的話需要用乙個標記記錄棧頂元素,第一次訪問棧頂的元素的時候不出棧,第二次訪問棧頂元素的時候...
尋找二叉樹公共祖先結點遞迴實現
definition for a binary tree node.struct treenode 尋找公共祖先結點lca演算法de思想 第零種情況 root為null時直接return 第一種情況 如果p在左子樹q在右子樹或反之則root為lca 第二種情況 p和q均在左子樹 lca遞迴左子樹 第...