判断结点N1是否为N2的祖先

【算法一】用一棵二叉树T的用前序序列和后序序列判定结点N1是否为N2的祖先检查前序序列,如果N1在N2前面,就标定tag1为1,检查后序序列,如果N1在N2的后面,就标定tag2为1【代码】#include <stdlib.h>#include <stdio.h>#define maxsize 100// 定义结点类型typedef struct bt...
摘要由CSDN通过智能技术生成

【算法一】用一棵二叉树T的用前序序列和后序序列判定结点N1是否为N2的祖先

检查前序序列,如果N1在N2前面,就标定tag1为1,检查后序序列,如果N1在N2的后面,就标定tag2为1

【代码】

#include <stdlib.h>
#include <stdio.h>
#define maxsize 100
// 定义结点类型
typedef struct btnode
{
	int data;
	struct btnode *lchild, *rchild;
} btnode;
FILE *fp;///使用文件读取数据

//二叉树
btnode* creat_bitree()
{
	char a;
	fscanf(fp, "%c", &a);
	btnode *node = NULL;
	if (a != '0')
	{
		node = (btnode *)malloc(sizeof(btnode));
		node->data = a;
		node->lchild = creat_bitree();
		node->rchild = creat_bitree();

	}
	return node;
}

int tag1, tag2;
void Check(btnode *bt,char N1,char N2)
{
	if (bt)
	{
		if (bt->data == N1)
		{
			tag1 = 0;
		}
		if(bt->data == N2)
		{
			tag1 = 1;
		}
		Check(bt->lchild, N1, N2);
		Check(bt->rchild, N1, N2);
		if (bt->data == N2)
		{
			tag2 = 0;
		}
		if (bt
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值