数据结构二叉树的遍历(二)

数据结构二叉树的遍历(二)

1、二叉树用二叉链表存储,编写算法采用先序遍历查找值为x的结点,找到返回其指针,否则返回NULL。

 

<span style="font-size:18px;">status serch_x(BinTree t,TreeType x){
	if(!t)
		return NULL; //查找失败
	if(t->data==x){
		return t;// 查找成功
		else{
			p=serche_x(p->lchild,x); //查找左子树
			if(p)
				return p;
			else
				return serch_x(p->rchild,x)  </span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;">//查找右子树</span><span style="font-size:18px;">
     
		}
	}
}</span>

2、二叉树用二叉链表存储,编写算法要求返回二叉树的后序序列中的第一个结点的指针。

 

 

<span style="font-size:18px;"><span style="font-size:18px;">status serch_x(BinTree  t){
	p=t;
	if(p){
		while(p->lchile||p->rchild){   //有孩子
			while(p->lchild)   //找到p的左子树中的最左下方的结点
				p=p->lchild;
				if(p->rchild)
					p=p->rchild;
		}
	}
}</span></span>

 

3、已知一棵二叉树的先序序列和中序序列分别存储于两个一维数组pre和ino中,编写算法建立该二叉树的二叉链表。

 

<span style="font-size:18px;">status create(char *pre,char *ino,int n){
if(n<0)
return NULL;
p=(BinTree)malloc(sizeof(BiTNode));
p->data=*pre;  //根结点
for(q=ino;q<ino+p,++q){ //在中序序列中确定根的位置
if(*ino==*pre)
break;
}
k=q->ino;    //左子树的结点数
p->lchild=create(pre+1,ino,k);
p->rchild=create(pre+1+k,ino+1,n-1-k);
return p;
}</span>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值