青涩小脸蛋 2021-05-13 22:46 采纳率: 0%
浏览 21

层次建立二叉树遍历出错


tree *creat2()//逐层建立二叉树
{
	tree* qnode[100];
	char ch;
	int i=0;
	ch=getchar();
	while(ch!='#')
	{
		i=i+1;
		qnode[i]=(tree*)malloc(sizeof(tree));
		qnode[i]->x=ch;
		ch=getchar();
	
	}
    
	for(int n=1;n<=i;++n)
	{
		if(n==1)
		{
			qnode[n]->L=0;
			qnode[n]->R=0;
		}
	   else if(n%2==0)
		{
			qnode[n/2]->L=qnode[n];
		}
	   else if(n%2!=0)
	   {
	   		qnode[n/2]->R=qnode[n];
	   }
       
		
	}
	
	return qnode[1];
} 
 

oid preread(tree*& b)//前序遍历 
{
	

	if(b!=0)
	{
		cout<<(*b).x;
		preread(b->L);
		preread(b->R);
	}
	
}




int main()
{
	tree* t;
	t=creat2();
	
	preread(t);
}

遍历时右叉树数据出不来,是其他的汉字

  • 写回答

2条回答 默认 最新

  • benbenli 2021-05-14 02:08
    关注

    帮你把错误改了,可以运行了。你看结果是不是你想要的。你自己继续调试,权当练身手吧

    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct tree
    {
        char x;
        struct tree* L;
        struct tree* R;
    } tree;
    
    tree *creat2()//逐层建立二叉树
    {
    	tree* qnode[100];
    	char ch;
    	int i=0;
    	ch=getchar();
    	while(ch!='#')
    	{
    		i=i+1;
    		qnode[i]=(tree*)malloc(sizeof(tree));
    		qnode[i]->x=ch;
    		ch=getchar();
    	
    	}
    	for(int n=1;n<=i;++n)
    	{
    		if(n==1)
    		{
    			qnode[n]->L=0;
    			qnode[n]->R=0;
    		}
    	   else if(n%2==0)
    		{
    			qnode[n/2]->L=qnode[n];
    		}
    	   else if(n%2!=0)
    	   {
    	   		qnode[n/2]->R=qnode[n];
    	   }
    		
    	}
    	
    	return qnode[1];
    } 
    void preread(tree*& b)//前序遍历 
    {
    	
    	if(b!=0)
    	{
    		printf("%c", (*b).x);
    		preread(b->L);
    		preread(b->R);
    	}
    	
    }
    int main()
    {
    	tree* t;
    	t=creat2();
    	
    	preread(t);
    }
    
    // Output
    abcdefghijklmnopqrstuvwxyz#                                                                                                                            
    abdhpqirsejtukvwcflxymzgno
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令