⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bt_main.cpp

📁 BiTree 实现二叉树的基本功能
💻 CPP
字号:
//BT_main.cpp
//uuhorse
//2008.05.17

#include "St_BT.h"
#include <stdio.h>

void menu();
int main()
{	
	BiTree T;
	BiTNode* NT;
	TElemType data;
	TElemType pdata;
	int lr;
	int dep;

	int options=1;	//默认初始化
	menu();
	while (options)
	{

		switch (options)
		{
		case 0:
			break;
		case 1:
			InitBiTree (T);
			break;
		case 2:
			printf("请按先序序列输入二叉树的各个节点!\n");
			printf("用空格表示空节点!\n");
			CreateBiTree (T);
			break;
		case 3:
			if( BiTreeEmpty (T))
				printf("T is NULL!\n");
			else
				printf("T is not NULL!\n");
			break;
		case 4:	
			if( BiTreeEmpty (T))
			{
				printf("T is NULL!\n");
				break;
			}
			PreOrderTraverse (T);
			printf("\n");
			break;
		case 5:	
			if( BiTreeEmpty (T))
			{
				printf("T is NULL!\n");
				break;
			}
			InOrderTraverse (T);
			printf("\n");
			break;
		case 6:	
			if( BiTreeEmpty (T))
			{
				printf("T is NULL!\n");
				break;
			}
			PostOrderTraverse (T);
			printf("\n");
			break;
		case 7:	
			if( BiTreeEmpty (T))
			{
				printf("T is NULL!\n");
				break;
			}
			LevelOrderTraverse (T);	
			printf("\n");
			break;
		case 8:
			dep=BiTreeDepth (T);
			printf("Depth=%d \n",dep);
			break;
		case 9:
			printf("请输入双亲的一个孩子节点! \n");
			data=getchar();
			getchar();
			NT=Parent(T,data);
			if(NT)
				printf("%c\n",NT->data);
			else
				printf("未找到该节点双亲! \n");
			break;
		case 10:
			printf("请输入孩子节点的双亲! \n");
			data=getchar();
			getchar();
			NT=LeftChild(T,data);
			if(NT)
				printf("%c\n",NT->data);
			else
				printf("该节点无左孩子!\n");
			break;
		case 11:
			printf("请输入孩子节点的双亲! \n");
			data=getchar();
			getchar();
			NT=RightChild(T,data);
			if(NT)
				printf("%c\n",NT->data);
			else
				printf("该节点无右孩子!\n");
			break;
		case 12:
			printf("请输入你想插入孩子节点的双亲! \n");
			pdata=getchar();
			getchar();
			printf("请输入你想插入的孩子节点! \n");
			data=getchar();
			getchar();
			printf("0、插入左孩子节点1、插入右孩子节点! \n");
			scanf("%d",&lr);getchar();
			NT=FineNode (T, pdata);
			if(NT)
				InsertChild (T, NT, lr, data);
			else
				printf("未找到需要插入的位置!\n");
			break;
		case 13:
			printf("请输入你想删除孩子节点的双亲! \n");
			pdata=getchar();
			getchar();
			printf("0、插入左孩子节点1、插入右孩子节点! \n");
			scanf("%d",&lr);getchar();
			NT=FineNode (T, pdata);
			if(NT)
				DeleteChild (T, NT, lr);
			else
				printf("未找到给定的节点!\n");
			break;
		case 14:
			DestoryBiTree (T);
			break;
		case 15:
			menu();
			break;
		}//	switch (options)

		printf("\n请选择:\n");	
		scanf("%d",&options);getchar();
	}//while (options)
	return 0;
}

void menu()
{
	printf(" 0、退出 \n");
	printf(" 1、初始化二叉树 T \n");
	printf(" 2、生成二叉树 T \n");	
	printf(" 3、判断二叉树 T是否为空 \n");
	printf(" 4、先序遍历二叉树 T \n");
	printf(" 5、中序遍历二叉树 T \n");
	printf(" 6、后序遍历二叉树 T \n");
	printf(" 7、层序遍历二叉树 T \n");
	printf(" 8、求二叉树 T的深度 \n");
	printf(" 9、求某节点双亲 \n");
	printf("10、访问左孩子节点 \n");
	printf("11、访问右孩子节点 \n");
	printf("12、插入孩子节点 \n");
	printf("13、删除节点 \n");
	printf("14、销毁二叉树T \n");
	printf("15、显示菜单 \n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -