平衡二叉樹 c c 實現

2021-07-10 18:43:26 字數 1391 閱讀 2282

#include#include#include#includeusing namespace std;

struct stud;

stud * empty(stud * cur)//刪除樹

inline int height(stud * cur)//計算高度

stud* llchange(stud * cur) //ll旋轉操作

stud* rrchange(stud* cur)//rr旋轉操作

stud* lrchange(stud* cur) //lr旋轉操左

stud* rlchange(stud * cur)

stud* insert(stud * cur,int va)

if(cur->val==va) return cur;//有相同的

if(cur->val>va)

}else//同理

}cur->height=max(height(cur->left),height(cur->right))+1;

return cur;

}stud * adjust(stud *cur)//對於刪除了乙個節點,那麼是需要判斷是否還是平衡,如果不平衡,就要調整

if(height(cur->right)-height(cur->left)==2)

cur->height=max(height(cur->left),height(cur->right))+1;

return cur;

}stud * delete(stud * cur,int va)

else//否則,將其右子樹的最左孩子作為這個節點,並且遞迴刪除這個節點的值

return cur;

}if(cur->val>va)//調節刪除節點後可能涉及的節點

cur->left=delete(cur->left,va);

if(cur->valright=delete(cur->right,va);

cur->height=max(height(cur->left),height(cur->right))+1;

if(cur->left)

cur->left=adjust(cur->left);

if(cur->right)

cur->right=adjust(cur->right);

if(cur) cur=adjust(cur);

return cur;

}void show(stud *cur)//前序遍歷方便看樹的結果

int main()

{ int i,j;

int n,x;

stud * root=null;

while(~scanf("%d",&n))

{root=empty(root);

for(int i=0;i

python實現平衡二叉樹 平衡二叉樹python

stack depth is initialised to 0 def find in tree node,find condition,stack depth assert stack depth max stack depth deeper than max depth stack depth ...

平衡二叉樹例題 平衡二叉樹

acwing 72.平衡二叉樹 思路一 求每個節點的左右子樹深度,根據深度差判斷,直到葉子節點結束,效率不夠高,每個節點都要用兩次計算深度的遞迴函式 思路二 從葉子節點開始,計算深度差,一旦有深度差大於1的,就直接返回0,也不用管上面的深度是不是正確了,畢竟我們只需要true和false兩種狀態,省...

二叉樹 平衡二叉樹

1.題目 給定乙個二叉樹,判斷這棵二叉樹是否是高度平衡的二叉樹 平衡二叉樹 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1 2.題目分析 1 如果乙個節點的兩個子樹的深度之差超過1,則不是平衡二叉樹 2 如果乙個節點的兩個子樹的深度之差不超過1,則是平衡二叉樹 3.程式分析 1 若這棵二...