構建乙個值的型別為int的平衡二叉搜尋樹,輸入n,然後進行n次插入操作,每次插入之後進行一次遍歷驗證**正確性。(刪除目前還寫不出來,以後有機會再補吧)
#include "bits/stdc++.h
"using
namespace
std;
typedef
long
long
ll;const
int inf = 0x3f3f3f3f
;struct
**l *root;
**l*fafa;
**l*fa;
**l*me;
**l* init(int val, **l*fa)
void updateheight(**l*point)
}bool unbalance(**l*point)
int lheight = fafa->lson == null ? 0 : fafa->lson->height;
int rheight = fafa->rson == null ? 0 : fafa->rson->height;
if (abs(lheight - rheight) > 1
)
return
unbalance(fa);
}void leftrotate(**l* fa, **l*me)
else
}fa->rson = me->lson;
if (me->lson !=null)
fa->father =me;
me->lson =fa;
updateheight(fa);
}void rightrotate(**l* fa, **l*me)
else
}fa->lson = me->rson;
if (me->rson !=null)
fa->father =me;
me->rson =fa;
updateheight(fa);
}void
rebalance()
if (fafa->rson == fa && fa->rson ==me)
if (fafa->lson == fa && fa->rson ==me)
rightrotate(fa, me);
leftrotate(fafa, me);
}void insert(int
val)
father =now;
if (now->value else
}if (father ==null)
else
if (father->value }
else
}}void ergodic(**l*point)
printf(
"%d
", point->value);
ergodic(point->lson);
ergodic(point->rson);
}int
main()
ergodic(root);
puts(
"");
}return0;
}
二叉搜尋樹的插入,刪除,和中序遍歷
構建乙個值的型別為int的二叉搜尋樹,輸入n和m,然後進行n次插入操作,每次插入之後進行一次遍歷驗證 正確性。然後進行m次刪除操作,每次刪除之後進行一次遍歷驗證 正確性。include bits stdc h using namespace std typedef long long ll cons...
二叉樹先序遍歷和中序遍歷確定二叉樹
由於希望得到一顆二叉樹,所以返回值型別是乙個指向根節點的指標 表示得到了一顆二叉樹 btnode creatbt char pre,char int,int l1,int r1,int l2,int r2 引數列表有傳入的先序序列和後序序列和他們的開頭和結尾 由於是遞迴函式,先寫乙個遞迴出口,顯然是...
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...