计算机困难户 2022-11-12 21:01 采纳率: 100%
浏览 6
已结题

输出二叉树结点的祖先以及其结点的所在层数

#include<stdio.h>
#include<stdlib.h>
#include
using namespace std;
int level,t;
char s[56];

typedef int status;
typedef struct BiTNode
{
char data;
struct BiTNode* lchild, *rchild;
}BiTNode, *BiTree;

BiTree creat()
{
BiTNode *root;
scanf("%d", & s[t]);
if(s[++t]==',')
root=NULL;
else
{
root=new BiTNode;
root->data=s[t];
root->lchild=creat();
root->rchild=creat();
}
return root;
/BiTree root = (BiTree)malloc(sizeof(BiTNode));
int x;
scanf("%d", &x);
if(x==-1)
root = NULL;
else
{
root->data = x;
root->lchild = creat();
root->rchild = creat();
}
return root;
/
}
void visit(char x,int level)
{
printf("%c 位于第 %d 层\n",x,level);
}
void pre(BiTNode *root,int level)
{
if(root)
{
visit(root->data,level);
pre(root->lchild,level+1);
pre(root->rchild,level+1);
}
}

int anc[10000];
int i=0, tag=0;
int Ancestor(BiTree bt, int x)
{
if(bt==NULL) return 0;
if(bt->data==x) {tag=1;return 1;}
if(Ancestor(bt->lchild,x)||Ancestor(bt->rchild,s[t])) {anc[i++]=bt->data;return 1;}
}
int main()
{

BiTree bt=creat();
//int x;
//scanf("%d",&x);
Ancestor(bt,s[t]);
if(tag==0)    printf("No Node!");
else if(bt->data==s[t]) printf("No Ancestor!");
else
{
    for(int j=i-1;j>=0;j--)
        printf("%d ",anc[j]);
}
scanf("%s",s);
t=-1;
level=1;
BiTNode *root;
root=creat();
pre(root,level);
return 0;

}
可以麻烦你看看我的这个代码段吗,我想输出二叉树结点的祖先以及其结点的所在层数,可以吗

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 11月21日
  • 已采纳回答 11月13日
  • 创建了问题 11月12日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备