关于网站开发的自我评价,闵行建设机械网站,青色系 网站,佛山 做网站公司11.202019年真题*2BST二叉排序树分裂、双向冒泡排序
2019 真题 【2019 1】编写算法#xff0c;将一棵二叉排序树 分解成两棵二叉排序树 t1和t2#xff0c;使得t1中的所有结点关键字的值都小于x#xff0c;t2中所有结点关键字都大于x。 typedef struct BSTNode{int data;str…11.202019年真题*2BST二叉排序树分裂、双向冒泡排序
2019 真题 【2019 1】编写算法将一棵二叉排序树 分解成两棵二叉排序树 t1和t2使得t1中的所有结点关键字的值都小于xt2中所有结点关键字都大于x。 typedef struct BSTNode{int data;struct BSTNode *left,*right;
}BSTNode;void splitBST(BSTNode* t,int x, BSTNode *A,BSTNode *B){if(t NULL){A NULL;B NULL;return ;}if(t-data x){//当前结点属于A且左子树都属于AA t;//递归处理右子树splitBST(t-right , x , A-right , B);}else{//当前节点属于B且右子树都属于BB t;//递归处理左子树判断是否还有大于x的值splitBST(t-left , x , A , B-left);}
}【2019 2】传统的冒泡排序始终从低位开始往高位索引方向扫描元素进行排序但是有一种改进的冒泡排序既能从低位往高位扫描元素也能从高位往低位双向扫描元素请编写算法实现这种双向冒泡排序。 //默认是升序
void DoubleBubble(int arr[] , int n){int begin 0 , end n-1;while(begin end){//低位往高位将大的往后for(int i begin ; i end ; i){if(arr[i] arr[i1])swap(arr[i] , arr[i1]);}end--;//高位往低位将小的往前for(int j end; j begin ; --j){if(arr[j] arr[j-1])swap(arr[j] , arr[j-1]);}begin;}
}