13、在一棵高度為o(logn)的二叉排序樹的結點上儲存著浮點數,請用c語言寫乙個函式來計算一棵樹上界於任意倆個浮點數x1和x2 (x1#include
#include
using
namespace
std;
typedef
struct btnode
btnode;
//二叉排序樹插入結點
int bstinsert(btnode * &p, int num)
else
}//找到根節點到指定num結點的路徑 path裡存的是路徑 count是陣列長度,即路徑長度
int find_print(btnode *p, int num, int path, int level, int &count)
if(find_print(p->lchild, num, path, level+1, count))
return
1; return find_print(p->rchild, num, path, level+1, count);
}else
}//列印路徑
void show_arr(int a, int len)
; btnode *root=null;
int i, len=sizeof(arr)/sizeof(arr[0]);
for(i=0; iint path1[len], path2[len];
int cout1, cout2;
find_print(root, 3, path1, 1, cout1);
find_print(root, 21, path2, 1, cout2);
//列印根結點到3的路徑
show_arr(path1, cout1);
//列印根結點到21的路徑
show_arr(path2, cout2);
//找到最近的公共祖先
for(i=0; iif(path1[i] != path2[i])
break;
//因為i指向的是最近公共祖先的陣列下標,實際長度應該i+1
//++i; int result = cout1-i+cout2-i+1; 和下面是等價的
int result = cout1-i+cout2-i-1;
cout
<<"結果為:"
0;}
完全二叉樹兩個結點的公共結點
1 2 3 4 5 6 7 如上圖所示,由正整數 1,2,3,組成了一棵無限大的二叉樹。從某乙個結點到根結點 編號是1的結點 都有一條唯一的路徑,比如從5到根結點的路徑是 5,2,1 從4到根結點的路徑是 4,2,1 從根結點1到根結點的路徑上只包含乙個結點1,因此路徑就是 1 對於兩個結點x和y,...
求二叉排序樹中兩個結點的最近公共祖先
實驗題目 求二叉排序樹中兩個結點的最近公共祖先 實驗目的 掌握二叉排序樹的遞迴查詢過程及其演算法設計 實驗內容 設計程式,構造一顆二叉排序樹bt,輸出bt中關鍵字分別為x y 的結點的最近公共祖先lca。include include include define max size 100 type...
二叉樹兩個結點的最低共同父結點
需要思考為什麼採用inorder遍歷是可以的?其他遍歷方式結果不正確?include templateclass treenode t value treenode left treenode right templateclass visitcontext treenode node1 treen...