#include<iostream>
#define N 7
using namespace std;
//定义节点
class node
{
public:
int data;
node *leftChild;//指针
node *rightChild;
};
typedef node BiTreeNode;
typedef node *BiTree;//等价
node *createNode(int value)//创建节点,返回类型指针型,所以加*
{
node * q = new node;
q->leftChild = NULL;//leftChild指针为空
q->rightChild = NULL;
q->data = value;
return q;
}
void createBiTree(BiTree &T)
{
char c;
cin >> c;
if (c=='#')
T = NULL;
else
{
T = new BiTreeNode;
T->data = c;
createBiTree(T->leftChild);
createBiTree(T->rightChild);
}
}
//访问节点中的数据
char visit(BiTree tree)
{
return tree->data;
}
// 先序遍历
void preorderTreeWalk(BiTree tree)
{
if(tree)
{
cout << visit(tree) << " ";
preorderTreeWalk(tree->leftChild);
preorderTreeWalk(tree->rightChild);
}
}
// 中序遍历
void inorderTreeWalk(BiTree tree)
{
if(tree)
{
inorderTreeWalk(tree->leftChild);
cout << visit(tree) << " ";
inorderTreeWalk(tree->rightChild);
}
}
// 后序遍历
void postorderTreeWalk(BiTree tree)
{
if(tree)
{
postorderTreeWalk(tree->leftChild);
postorderTreeWalk(tree->rightChild);
cout << visit(tree) << " ";
}
}
int main()
{
BiTree tree;
createBiTree(tree);
cout << "先序遍历结果为:";
preorderTreeWalk(tree);
cout << endl;
cout << "中序遍历结果为:";
inorderTreeWalk(tree);
cout << endl;
cout << "后序遍历结果为:";
postorderTreeWalk(tree);
cout << endl;
return 0;
}
二叉树的遍历
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 二叉树层次遍历 按照二叉树中的层次从左到右依次遍历每层中的结点。具体的实现思路是:通过使用队列的数据结构,从树的根...
- 方法一:递归遍历 方法二:非递归遍历算法思想:使用栈。 内层循环用来存储节点,外层循环将内层循环的存储不断地转至节...
- 二叉树的遍历 树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且...