为了账号安全,请及时绑定邮箱和手机立即绑定

请问二叉树遍历程序错在哪里?为什么我的Pre()函数运行不下去了?

请问二叉树遍历程序错在哪里?为什么我的Pre()函数运行不下去了?

慕田峪7331174 2022-03-19 13:09:48
二叉树遍历程序错在哪里?Pre()函数运行不下去了,求大神解答,谢谢!//// main.c// BinTree2//// Created by chongyi yang on 9/29/17.// Copyright © 2017 chongyi yang. All rights reserved.//#include <stdio.h>#include <mm_malloc.h>#define DEPTH 3typedef struct node *TNode;struct node{int letter;TNode left;TNode right;};TNode Create(TNode tree,int depth);void Pre(TNode tree);int main(){TNode tree;tree=(TNode)malloc(sizeof(TNode));tree=Create(tree,DEPTH);Pre(tree);return 0;}TNode Create(TNode Tree,int depth){TNode t_left,t_right;//Initializationt_left=(TNode)malloc(sizeof(TNode));t_right=(TNode)malloc(sizeof(TNode));t_left->letter=0;t_right->letter=0;t_left->left=NULL;t_left->right=NULL;t_right->left=NULL;t_right->right=NULL;printf("Type tree's letter:\n");scanf("%d",&Tree->letter);//getchar();Tree->left=t_left;Tree->right=t_right;if(Tree){depth--;if(depth<=0)return NULL;Create(Tree->left,depth);Create(Tree->right, depth);}return Tree;}void Pre(TNode tree){if(tree){printf("%d ",tree->letter);Pre(tree->left);Pre(tree->right);}return;}
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您遍历的算法写错了,按照如下写法就可以了。
#include<iostream>
#include<string>
using namespace std;
class Node
{
public:Node(){}
~Node(){}
public:char data;
Node *lchild;
Node *rchild;
};
void creattree(Node *&T)
{
Node *n;
n = new Node();
cin>>n->data;
if(n->data == '#')
//如果当前节点为空 不创建
{
T=NULL;
}
else
//节点非空时 创建该节点n
{
T = n;
creattree(T->lchild);
creattree(T->rchild);
}
}
void inOrderTraverse(Node *&T)
{
if (T == NULL) //修改此处增加对空的判断
{
return;
}
inOrderTraverse(T->lchild);
cout<<T->data; //此处的判断删除
inOrderTraverse(T->rchild);
}
int main()
{
Node *T=NULL;
cout<<"开始创建二叉树:"<<endl;
creattree(T);
cout<<"以下开始用中序法遍历二叉树:"<<endl;
inOrderTraverse(T);
cout<<endl;
delete T;
return 0;
}



查看完整回答
反对 回复 2022-03-23
  • 1 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号