树的前中后序遍历和层次遍历

匿名 (未验证) 提交于 2019-12-03 00:11:01
#include <iostream> #include <stack> #include <queue>  using namespace std;  struct BitreeNode {     int data;     struct BitreeNode *lchild, *rchild; };  void InitTreeNode(BitreeNode &t, int data, BitreeNode *lchild, BitreeNode *rchild) {     t.data = data;     t.lchild = lchild;     t.rchild = rchild; }  //前序 void PreOrder(BitreeNode *t) {     if (t != nullptr)     {         cout << t->data << " ";         PreOrder(t->lchild);         PreOrder(t->rchild);     } } //中序 void Inorder(BitreeNode *t) {     if (t != nullptr)     {         Inorder(t->lchild);         cout << t->data << " ";         Inorder(t->rchild);     } } //后序 void PostOrder(BitreeNode *t) {     if (t != nullptr)     {         PostOrder(t->lchild);         PostOrder(t->rchild);         cout << t->data << " ";     } }  //层次遍历 void LevelOrder(BitreeNode *t) {     queue<BitreeNode *> q;     BitreeNode *p;     q.push(t);       while (!q.empty())     {         p = q.front();         q.pop();         cout << p->data << " ";         if (p->lchild != nullptr)             q.push(p->lchild);         if (p->rchild != nullptr)             q.push(p->rchild);     } }  int main() {     BitreeNode t1, t2, t3, t4, t5, t6, t7;      InitTreeNode(t4, 4, nullptr, nullptr);     InitTreeNode(t5, 5, nullptr, nullptr);     InitTreeNode(t6, 6, nullptr, nullptr);     InitTreeNode(t7, 7, nullptr, nullptr);     InitTreeNode(t2, 2, &t4, &t5);     InitTreeNode(t3, 3, &t6, &t7);     InitTreeNode(t1, 1, &t2, &t3);      //层次遍历     LevelOrder(&t1);     cout << endl;     //前序遍历     PreOrder(&t1);     cout << endl;     //中序遍历     Inorder(&t1);     cout << endl;     //后续遍历     PostOrder(&t1);     cout << endl;     system("pause");     return 0; }

运行测试:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!