📄 二叉树的中序遍历.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 + -