JamesLiuxy


私信TA

用户名:usernames

访问量:2789

签 名:

等  级
排  名 34138
经  验 405
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 哈尔滨信息工程学院
专  业

  自我简介:

TA的其他文章

解题思路:先用先序二叉树排序,存值。后用中序输出。
注意事项:要注意ABC##DE#G##F###  注意最后是三个空格  你可以用纸去画下二叉树就知道了。#代表空格。其他的别人都有解释。   


注意理解下  这里二叉树的申请相当于一个大的指针里面有许多个小指针。这些小指针就是二叉树的节点。

大节点就是BiTree *T;

本来BiTree T和BiTNode *T是一样的但是BiTree *T这里的*T相当于大指针。否则也创建不了二叉树。二叉树其实也是自己脑子里假想的。不说了。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

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

void CreateBiTree(BiTree *T)
{	
	char ch;
	scanf("%c",&ch);
	
	if(ch==' ')//不能拿空值输入的是空格不是空值 
	{
         *T=NULL;
         return;
	}
	else 
	{
		*T=(BiTNode*)malloc(sizeof(BiTNode));
		if(!*T)exit(0);//申请内存失败 
		(*T)->data=ch;
		CreateBiTree(&((*T)->lchild));
		CreateBiTree(&((*T)->rchild));
	}
	
}

void display(BiTNode *elem){	
	printf("%c ",elem->data);
}

void PreOrderTree(BiTree T){
	
	if(T){
		display(T);
		PreOrderTree(T->lchild);
		PreOrderTree(T->rchild);
	}
	return ;	
}

void InOrderTree(BiTree T){
	if(T){
	   InOrderTree(T->lchild);
	   display(T);
	   InOrderTree(T->rchild);	
	}
	return ;	
}

void LastOrderTree(BiTree T){
	if(T){
		LastOrderTree(T->lchild);
		LastOrderTree(T->rchild);
		display(T);
	}
	
	return ;
}

int main()
{	
	BiTree tree;	
	CreateBiTree(&tree);  	
//	PreOrderTree(tree);
	printf("\n");
	InOrderTree(tree);
//	printf("\n");
//	LastOrderTree(tree);
	return 0;	
}


 

0.0分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

你这线索化都没有能叫线索二叉树?
2022-08-27 21:19:27
你这线索化都没有能叫线索二叉树?
2021-12-13 15:57:17
你这线索化都没有能叫线索二叉树?
2020-06-04 23:46:54
  • «
  • 1
  • »