#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; }
运行测试:
来源:博客园
作者:煊奕
链接:https://www.cnblogs.com/clwsec/p/11569686.html