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

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

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>
发布了269 篇原创文章 · 获赞 2 · 访问量 6972

猜你喜欢

转载自blog.csdn.net/zhupengqq1/article/details/104220722