理论原理:
代码实现:
#include <iostream>
using namespace std;
struct Binary_Tree_Node
{
char data;
Binary_Tree_Node *lchild;
Binary_Tree_Node *rchild;
Binary_Tree_Node(char data,Binary_Tree_Node *lchild,Binary_Tree_Node *rchild);
};
Binary_Tree_Node::Binary_Tree_Node(char data,Binary_Tree_Node *lchild,Binary_Tree_Node *rchild)
{
this->data=data;
this->lchild=lchild;
this->rchild=rchild;
}
void traversal(Binary_Tree_Node *root)
{
//终止条件
if(root == NULL)
return;
//先序遍历
// cout<<root->data;
// traversal(root->lchild);
// traversal(root->rchild);
//中序遍历
// traversal(root->lchild);
// cout<<root->data;
// traversal(root->rchild);
//后序遍历
traversal(root->lchild);
traversal(root->rchild);
cout<<root->data;
}
int main()
{
//创建结点
Binary_Tree_Node nodeA('A',NULL,NULL);
Binary_Tree_Node nodeB('B',NULL,NULL);
Binary_Tree_Node nodeC('C',NULL,NULL);
Binary_Tree_Node nodeD('D',NULL,NULL);
Binary_Tree_Node nodeE('E',NULL,NULL);
Binary_Tree_Node nodeF('F',NULL,NULL);
Binary_Tree_Node nodeG('G',NULL,NULL);
Binary_Tree_Node nodeH('H',NULL,NULL);
//创建树
nodeA.lchild=&nodeB;
nodeA.rchild=&nodeF;
nodeB.rchild=&nodeC;
nodeC.lchild=&nodeD;
nodeC.rchild=&nodeE;
nodeF.rchild=&nodeG;
nodeG.lchild=&nodeH;
//遍历二叉树
traversal(&nodeA);
return 0;
}
先序遍历运行结果:
中序遍历运行结果:
后序遍历运行结果: