二叉树初步:

代码如下,注释很详细。

#define  _CRT_SECURE_NO_WARNINGS#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;//利用结构体去保存每一个节点的各个数据(节点数据、创建左右节点)typedef struct treeNode//typedef重命名去简化每一次创建结构体时的操作{char data;//节点数据struct treeNode* LChild;//创建左子树struct treeNode* RChild;//创建右子树}TREE,*LPTREE;//将创建结构体命名为TREE,创建结构体指针重命名为LPTREE//创建新节点的函数。(输入新节点的数据)LPTREE creatNode(char data){//malloc()函数分配内存空间//sizeof(LPTREE)大小为LPTREE的内存空间//整个含义://分配一个LPTREE类型大小的数据空间给newNodeLPTREE newNode = (LPTREE)malloc(sizeof(TREE));newNode->data = data;//将新节点的数据输入newNode->LChild = NULL;//将左子树和右子树初始化为空newNode->RChild = NULL;return newNode;//返回数据}//插入数据的函数。(完善一个节点左右子树的信息)-做链接void insertNode(LPTREE parentNode, LPTREE LChild, LPTREE RChild){parentNode->LChild = LChild;//父节点的左边赋值左节点parentNode->RChild = RChild;//父节点的右边赋值右节点}//创建一个打印函数void printCurNodeData(LPTREE curData){cout <data <LChild);//递归打印左子树preOrder(root->RChild);//同上}}//中序void midOrder(LPTREE root)//输入节点{if (root != NULL){preOrder(root->LChild);//递归打印左子树printCurNodeData(root);//打印根部preOrder(root->RChild);//同上}}//后序void lastOrder(LPTREE root)//输入节点{if (root != NULL){preOrder(root->LChild);//递归打印左子树preOrder(root->RChild);//同上printCurNodeData(root);//打印根部}}int main(){//创建A-G节点LPTREE A = creatNode('A');LPTREE B = creatNode('B');LPTREE C = creatNode('C');LPTREE D = creatNode('D');LPTREE E = creatNode('E');LPTREE F = creatNode('F');LPTREE G = creatNode('G');//建立连接insertNode(A, B, C);insertNode(B, D, NULL);insertNode(D, NULL, G);insertNode(C, E, F);cout << "先序遍历" << endl;preOrder(A);cout << endl;cout << "中序遍历" << endl;midOrder(A);cout << endl;cout << "后序遍历" << endl;lastOrder(A);cout << endl;return 0;}