考研算法题练习2022.11.13

1.设计一个求结点x在二叉树中的双亲结点算法。

typedef struct BiTNode{
	int data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree; 
BiTNode *p;
void PreOrder(BiTree t,int x){
	if(t){
		if(t->lchild!=NULL&&t->lchild->data==x)p = t;
		if(t->rchild!=NULL&&t->rchild->data==x)p = t;
		PreOrder(t->lchild,1);
		PreOrder(t->rchild,1);
	}
}
  1. 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。
typedef struct BiTNode{
	int data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void Switch(BiTree t){
	if(t->lchild==NULL||t->rchild==NULL)return;
	//当只有左子树或者只有右子树时不进行交换 
	if(t){
		Switch(t->lchild);
		Switch(t->rchild);
		BiTNode *tamp = t->lchild;
		t->lchild = t->rchild;
		t->rchild = tamp;
	} 
} 
/*
		 5
	   /   \
	  4     3
	/  \   / \         
   1   2  0   0
  / \ / \
 0  0 0  0
5 4 1 0 0 2 0 0 3 0 0
*/
  1. 在链式存储结构上建立一棵二叉排序树。
typedef struct BiTNode{
	int data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void InsertBT(BiTree &t,int e){
	if(!t){
		t = new BiTNode;
		t->data = e;
		t->lchild = t->rchild = NULL;
	}else if(e<t->data){
		InsertBT(t->lchild,e);
	}else {
		InsertBT(t->rchild,e);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值