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

📄 二叉树的中序遍历.cpp

📁 非常经典的二叉树遍历方法,卖血大放送!!不可不看
💻 CPP
字号:
// 这是使用应用程序向导生成的 VC++ 
// 应用程序项目的主项目文件。

#include "stdafx.h"

#include <stdio.h>
#include <malloc.h>

#define SKILLNUM 7
#define SKILL0 "0技能树根"            /*定义技能宏*/
#define SKILL1 "1烈焰"
#define SKILL2 "2冰冻"
#define SKILL3 "3烈焰光环"
#define SKILL4 "4冰锥"
#define SKILL5 "5寒冰盾"
#define SKILL6 "6火焰弹"

struct Node;                         /*前向声明*/
struct Node{
   struct Node *left;                /*左节点指针*/
   int skill;                      /*技能数据*/
   struct Node *right;               /*右节点指针*/
};
typedef Node NODE; 

//定义树结构体
typedef struct Tree{
	Node *root;
} TREE;

//通过输入数字,显示对应的技能描述
void show(int skill)
{
	switch(skill)
	{
	case 0: printf("%s\n",SKILL0); break;
	case 1: printf("%s\n",SKILL1); break;
	case 2: printf("%s\n",SKILL2); break;
	case 3: printf("%s\n",SKILL3); break;
	case 4: printf("%s\n",SKILL4); break;
	case 5: printf("%s\n",SKILL5); break;
	case 6: printf("%s\n",SKILL6); break;
	default:printf("未知技能\n");  break;
	}
}


//通过递归,中序遍历整个以node节点开始的子树
void BrowseTree(NODE *node)
{
	if(node!=NULL)
	{
		if(node->left!=NULL) BrowseTree(node->left);
		show(node->skill);
		if(node->right!=NULL) BrowseTree(node->right);		
	}	
}

void main()
{
	TREE tree;
	NODE *node;
	int i=0;
	//node=new NODE[7];
	if((node=new NODE[7]))
		printf("malloc nodes failed.\n");

	for(i=0;i<SKILLNUM;i++)
		node[i].skill=i;

	tree.root=node;
	node[0].left=node+1;//第一个节点的左子节点指向第二个节点
	node[0].right=node+2;//第一个节点的右子节点指向第三个节点

	//跟根节点的方法相同
	node[1].left=node+3;
	node[1].right=node+6;
	node[2].left=node+5;
	node[2].right=node+4;

	//以下节点为叶子节点,无子节点
	node[3].left=node[3].right=NULL;
	node[4].left=node[4].right=NULL;
	node[5].left=node[5].right=NULL;
	node[6].left=node[6].right=NULL;
	
	//遍历树
	BrowseTree(tree.root);
}

⌨️ 快捷键说明

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