树的遍历

来源:互联网 发布:什么是微观数据 编辑:程序博客网 时间:2024/05/21 23:06
A,二叉树:二叉树是具有如下特点的树,(1)二叉树是一棵树;(2)每个节点最多有两颗子树;(3)子树有左右之分。遍历二叉树通常会有三种方法,即先序遍历,中序遍历,后序遍历。
(a)先序遍历:先访问根节点,再访问左孩子节点,最后访问右孩子节点;
(b)中序遍历:先访问左孩子节点,再访问根节点,最后访问右孩子节点;
(c)后序遍历:先访问左孩子节点,再访问右孩子节点,最后访问根节点。
三种方式访问的顺序如下图所示:
 树的遍历
B,算法实现:

#include"iostream"

using namespace std;

//定义二叉树的结构

typedef struct BTNode

{

      char elem;

      BTNode *left;

      BTNode *right;

}BTNode;

//构造一棵二叉树

BTNode* createBTree()

{

      BTNode* nodes = (BTNode*)malloc(sizeof(BTNode*) * 8);

      nodes[0].elem = 'A'; nodes[1].elem = 'B';

      nodes[2].elem = 'C'; nodes[3].elem = 'D';

      nodes[4].elem = 'E'; nodes[5].elem = 'F';

      nodes[6].elem = 'G'; nodes[7].elem = 'H';

      nodes[0].left = &nodes[1]; nodes[0].right =&nodes[2];

      nodes[1].left = &nodes[3]; nodes[1].right =&nodes[4];

      nodes[2].left = &nodes[5]; nodes[2].right =&nodes[6];

      nodes[3].left = &nodes[7]; nodes[3].right = NULL;

      nodes[4].left = NULL; nodes[4].right = NULL;

      nodes[5].left = NULL; nodes[5].right = NULL;

      nodes[6].left = NULL; nodes[6].right = NULL;

      nodes[7].left = NULL; nodes[7].right = NULL;

      return nodes;

}

int main()

{

      void preOrder(BTNode*);

      void inOrder(BTNode*);

      void postOrder(BTNode*);

      BTNode *bt = createBTree();

      //三种遍历方式

      cout<<"先序遍历:";

      preOrder(bt);

      cout<<endl;

      cout<<"中序遍历:";

      inOrder(bt);

      cout<<endl;

      cout<<"后序遍历:";

      postOrder(bt);

      cout<<endl;

      return 0;

}

//先序遍历

void preOrder(BTNode *b)

{

      if(NULL == b)

             return;

      cout<<b->elem<<" ";

      preOrder(b->left);

      preOrder(b->right);

}

//中序遍历

void inOrder(BTNode *b)

{

      if(NULL == b)

             return;

      inOrder(b->left);

      cout<<b->elem<<" ";

      inOrder(b->right);

}

//后序遍历

void postOrder(BTNode *b)

{

      if(NULL == b)

             return;

      postOrder(b->left);

      postOrder(b->right);

      cout<<b->elem<<" ";

}

运行结果:



0 0
原创粉丝点击