剛開始接觸平衡二叉樹,沒有什麼太多要分析的。部落格裡有很多大佬們都寫的很好。平衡二叉樹就是每個節點的子樹的高度差不超過1的二叉樹。可以快速搜尋數值的一種演算法,最糟的情況就是一直找到底,但也是log(n)的。還是快很多。
#include
#include
#include
#define max(a , b) (a > b ? (a) : (b))
struct tree
;int
deep
(struct tree *root)
//計算深度
else
return root->d;
}struct tree *ll(
struct tree *root)
//ll型,就是右旋。插入的是左樹的左兒子。
struct tree *rr(
struct tree *root)
//rr型,就是左旋。插入的是右樹的右兒子。
struct tree *lr(
struct tree *root)
//lr型,要先左旋再右旋,插入的是左樹的右兒子。
struct tree *rl(
struct tree *root)
//rl型,要先右旋再左旋,插入的事右樹的左兒子。
struct tree *
creat
(struct tree *root,
int m)
else
else
//左樹的右兒子}}
else
//插入二叉樹的右樹
else
//右樹的右兒子}}
} root->d =
max(
deep
(root->ltree)
,deep
(root->rtree))+
1;//計算根的深度。
return root;
}int
main()
printf
("%d\n"
, root->data);}
return0;
}
資料結構實驗之查詢二 平衡二叉樹
建立平衡二叉樹,我們採用依次插入節點的方式進行。而平衡二叉樹上插入節點採用遞迴的方式進行。遞迴演算法如下 1 若該樹為一空樹,那麼插入乙個資料元素為e的新節點作為平衡二叉樹的根節點,樹的高度增加1。2 若待插入的資料元素e和平衡二叉樹 bbst 的根節點的關鍵字相等,那麼就不需要進行插入操作。3 若...
資料結構實驗之查詢二 平衡二叉樹
time limit 400ms memory limit 65536k 根據給定的輸入序列建立一棵平衡二叉樹,求出建立的平衡二叉樹的樹根。輸入一組測試資料。資料的第1行給出乙個正整數n n 20 n表示輸入序列的元素個數 第2行給出n個正整數,按資料給定順序建立平衡二叉樹。輸出平衡二叉樹的樹根。5...
資料結構實驗之查詢二 平衡二叉樹
資料結構實驗之查詢二 平衡二叉樹 time limit 400ms memory limit 65536k 根據給定的輸入序列建立一棵平衡二叉樹,求出建立的平衡二叉樹的樹根。輸入一組測試資料。資料的第1行給出乙個正整數n n 20 n表示輸入序列的元素個數 第2行給出n個正整數,按資料給定順序建立平...