⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 习题6-查找给定结点的双亲结点.c

📁 数据结构各章实验源代码; 数据结构实验源代码
💻 C
字号:
#include "datastru.h"
#include <stdio.h>
#include <malloc.h>
#include "二叉树.c"

BTCHINALR *search_ch(BTCHINALR *cur, char x){
/*先序查找:在以cur为根的子树中查找值为x的结点是否存在*/
BTCHINALR *temp;
	if(cur==NULL) return NULL;
	if(x == cur->data) return cur;
	temp = search_ch(cur->lchild,x);
	if (temp != NULL) return temp; 
	else return search_ch(cur->rchild,x);
};


BTCHINALR *parent(BTCHINALR *start, BTCHINALR *current){
/*从start所指结点起查找当前结点current的父亲结点*/
	BTCHINALR *p;
	
	if(start==NULL)return NULL;
	if(start->lchild==current||start->rchild==current)return start;
	p=parent(start->lchild,current);
	if(p!=NULL) return p;
	else return parent(start->rchild,current);
}

main()
{
  BTCHINALR *bt, *p, *temp;
  char ch;
  int i;

bt=createbt();     //建立二叉树,根为bt
fflush(stdin);
i = 1;
while(i){
printf("\n输入结点数据: ");  scanf("%c",&ch);
p = search_ch(bt,ch);
if(p == NULL) printf("\n无此结点\n\n");
else {if(p == bt) printf("\n无双亲结点,是根结点\n\n");
      else  { temp = parent(bt,p);
	  printf("\n%c 的双亲结点是%c\n\n",ch,temp->data);}}
printf("\n继续操作吗?(继续按1键,结束按0键):  \n");
fflush(stdin);
scanf("%d",&i);
fflush(stdin);}
printf("\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -