A?二叉排序樹 - 文本輸出
創(chuàng)新互聯(lián)是專業(yè)的全南網(wǎng)站建設(shè)公司,全南接單;提供做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行全南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!構(gòu)造二叉排序樹之后先序遍歷輸出,要注意如何處理特殊的輸出格式。
#includeusing namespace std;
typedef struct {
int key;
int otherinfo;
}ElemType;
typedef struct BSTNode {
ElemType data;
struct BSTNode* lchild, * rchild;
}BSTNode,*BSTree;
void InsertBST(BSTree& T, ElemType e) {
if (!T) {
BSTNode* S = new BSTNode;
S->data = e;
S->lchild = S->rchild = NULL;
T = S;
}
else if (e.key< T->data.key)
InsertBST(T->lchild, e);
else if (e.key >T->data.key)
InsertBST(T->rchild, e);
}
void CreatBST(BSTree& T)
{
T = NULL;
ElemType e;
int n;
cin >>n;
while(n--){
cin >>e.key;
InsertBST(T, e);
}
}
string s="";
void InorderTree(BSTree T) {
cout<data.key<< " ";
cout<< endl;
if(T->lchild || T->rchild)
{
s+=" ";
InorderTree(T->lchild);
InorderTree(T->rchild);
for(int i=0;i<4;i++) s.pop_back();
}
}
else
{
cout<<"#"<
B?銷售排行榜
結(jié)構(gòu)體把數(shù)據(jù)都儲存進(jìn)去,然后直接排序即可。第一遍按name排序把相同name的合并,第二遍按題意排序得到結(jié)果。
#includeusing namespace std;
struct shopg
{
string name;
long long num;
long long price;
}goods[100010];
bool pd1(shopg shopg1,shopg shopg2)
{
if(shopg1.nameshopg2.num) return true;
else if(shopg1.num==shopg2.num && shopg1.name>s)
{
goods[i].name=s;
cin>>goods[i].num;
cin>>goods[i].price;
goods[i].price*=goods[i].num;
cin>>s;
i++;
}
sort(goods,goods+i,pd1);
for(int j=0;j
C 二叉排序樹-平衡因子
在A題的基礎(chǔ)上多維護(hù)每個節(jié)點的左大深度和右大深度。
平衡因子為左大深度-右大深度。
#includeusing namespace std;
typedef struct {
int key;
int leftbal;
int rightbal;
}ElemType;
int cc;
typedef struct BSTNode {
ElemType data;
struct BSTNode* lchild, * rchild;
}BSTNode,*BSTree;
void InsertBST(BSTree& T, ElemType e) {
if (!T)
{
BSTNode* S = new BSTNode;
e.leftbal=cc;
e.rightbal=cc;
S->data = e;
S->lchild = S->rchild = NULL;
T = S;
}
else if (e.key< T->data.key)
{
cc++;
InsertBST(T->lchild, e);
T->data.leftbal=max(T->data.leftbal,cc);
}
else if (e.key >T->data.key)
{
cc++;
InsertBST(T->rchild, e);
T->data.rightbal=max(T->data.rightbal,cc);
}
}
void CreatBST(BSTree& T) {
T = NULL;
ElemType e;
int n;
cin >>n;
while(n--){
cin >>e.key;
e.leftbal=0;
e.rightbal=0;
cc=0;
InsertBST(T, e);
}
}
string s="";
void InorderTree(BSTree T) {
cout<data.key<< "("<data.leftbal-T->data.rightbal<<")";
cout<< endl;
if(T->lchild || T->rchild)
{
s+=" ";
InorderTree(T->lchild);
InorderTree(T->rchild);
for(int i=0;i<4;i++) s.pop_back();
}
}
else
{
cout<<"#"<
D?案例 1-1.1 二分查找
建議使用C++的二分查找函數(shù)lower_bound()
#includeusing namespace std;
int main()
{
int n,t;
cin>>n;
int a[n];
for(int i=0;i>a[i];
cin>>t;
auto g=lower_bound(a,a+n,t);
if(*g!=t) cout<<-1<
E?進(jìn)階實驗 1-3.1:兩個有序序列的中位數(shù)
不知道這題出在這一次作業(yè)的意義((((
#includeusing namespace std;
int main()
{
int n;
cin>>n;
int a[2*n];
for(int i=0;i<2*n;i++) cin>>a[i];
sort(a,a+2*n);
cout<
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧