計算二叉排序樹兩個結點間的結點數

2021-07-28 03:01:04 字數 1221 閱讀 7840

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...