文章

7

粉丝

0

获赞

35

访问

981

头像
二叉树遍历 题解:难点在于题目输入的字符串最后‘#’不够,导致没做完树,没有返回
P1161 清华大学/南京大学机试题
发布于2025年3月20日 21:04
阅读数 256

在这里借鉴了大佬们的全局变量想法,设置全局变量char s[100]和int a,主要作用是当输入 '\0'时,自动为没建好的树叶节点全部为NULL。

#include<iostream>
#include<string>
using namespace std;
int a;
char s[100];
typedef struct node{
	char data;
	struct node *lchild,*rchild;
}*BitTree;
void visit(BitTree T){
	if(T!=NULL){
		cout<<T->data<<' ';
	}
}
void CreatBitTree(BitTree &T){
	if(s[a]=='\0'){
		T=NULL;
		return;
	}
	if(s[a]=='#'){
		T=NULL;
		++a;
	}
	else{
		T=new node;
		T->data=s[a];
		++a;
		CreatBitTree(T->lchild);
		CreatBitTree(T->rchild);
	}
}
void InOrderTraverse(BitTree T){
	if(T!=NULL){
		InOrderTraverse(T->lchild);
		visit(T);
		InOrderTraverse(T->rchild);
	}

}
int main(){
	BitTree T=NULL;
	while(cin>>s){
		a=0;
		CreatBitTree(T);
		InOrderTraverse(T);
		cout<<endl;
		T=NULL;
	}
	return 0;
} 

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发