我覺得相對簡單的的平衡二叉樹的構造:
同時相對簡單地而有創意的列印樹形結構:
#include
#include
using
namespace std;
typedef
struct btreenode
struct btreenode* lchild,
* rchild;
}*btree;
void
rturn
(btree& p)
void
lturn
(btree& p)
void
debalance
(btree& p)
else
if(p-
>bf(
)==-2
)}void
insert
(btree& p,
int x)
else
else
debalance
(p);}}
bool
search
(btree& p,
int x)
bool
isbalance
(btree&p)
void
gotoxy
(int x,
int y)
void
print_tree
(int x,
int y,
int d,
int u,btree& p)
else
gotoxy
(x + d /
2, y-1)
; cout <<
"|";
}gotoxy
(x + d /
2, y)
; cout << p-
>date << endl;
print_tree
(x, y +
3, d/2,
1, p-
>lchild)
;print_tree
(d/2
+x, y +
3, d/2,
2, p-
>rchild);}
inthaash
(int i)
intmain()
else
if(op ==2)
else
if(op ==3)
}else
if(op ==33)
}else
if(op ==4)
}else
if(op ==44)
}else
if(op ==5)
else
if(op ==6)
else
break;}
}
列印樹形結構的效果如下:
資料結構 平衡二叉樹
1 空樹是平衡二叉樹。2 如果一棵樹不為空,並且其中所有的子樹都滿足各自的左子樹與右子樹的高度差都不超過 1。下面介紹乙個簡單應用,平衡二叉樹的相關操作以後補充。給定一顆二叉樹的頭結點 head,判斷一棵樹是否是平衡二叉樹。1.1 左子樹是否為平衡二叉樹 1.2 記錄左子樹的深度,最深到達哪一層,記...
平衡二叉樹 資料結構實驗之查詢二 平衡二叉樹
剛開始接觸平衡二叉樹,沒有什麼太多要分析的。部落格裡有很多大佬們都寫的很好。平衡二叉樹就是每個節點的子樹的高度差不超過1的二叉樹。可以快速搜尋數值的一種演算法,最糟的情況就是一直找到底,但也是log n 的。還是快很多。include include include define max a b a...
資料結構 二叉樹 2 平衡二叉樹 3
前面分析了平衡二叉樹是怎麼調整平衡的,這裡就來解決另乙個問題,平衡二叉樹理論為什麼能成立?難道就不會有怎麼調都不會平衡的情況嗎?一起 一下吧。我在很早的時候就注意到了乙個問題。上圖中是一顆不平衡的二叉樹向平衡調整的一部分過程,這個過程中我發現,子樹a,b,c,d的左右關係始終都是不變的,就是從左到右...