二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)
生活随笔
收集整理的這篇文章主要介紹了
二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、圖和運行結果如下
二、代碼如下:
#include<iostream> #include<string> #include<fstream> #include<queue> #include<stack> #include<string.h> using namespace std; static int level_count[10]; class BTree { public:int val;BTree *left, *right; };class Tree { public:BTree *root;Tree() {root = create_node(1, "root");}BTree *create_node(int level, string pos);void PreOrder(BTree *t);void InOrder(BTree *t);void PostOrder(BTree *t);void BFS(BTree *t);void DFS(BTree *t); };BTree *Tree::create_node(int level, string pos) {int data;BTree *node =new BTree;cout << "please enter data:level " << level << " " << pos <<" 第"<< ++level_count[level-1]<<"個節點"<< endl;cin >> data;if (data == 0){return NULL;}node->val = data;node->left = create_node(level + 1, "left");node->right = create_node(level + 1, "right");return node; }void Tree::PreOrder(BTree *t) {if (t){cout << t->val << " ";PreOrder(t->left);PreOrder(t->right);} }void Tree::InOrder(BTree *t) {if (t){InOrder(t->left);cout << t->val << " ";InOrder(t->right);} }void Tree::PostOrder(BTree *t) {if (t){PostOrder(t->left);PostOrder(t->right);cout << t->val << " ";} }/*廣度優先搜索算法*/ void Tree::BFS(BTree *t) {queue<BTree*> qu;qu.push(t);BTree *node;while (!qu.empty()){node = qu.front();cout << node->val << " ";qu.pop();if (node->left)qu.push(node->left);if (node->right)qu.push(node->right);} } /*深度優先搜索算法*/ void Tree::DFS(BTree *t) {stack<BTree *>st;st.push(t);BTree *node;while (!st.empty()){node = st.top();cout << node->val << " ";st.pop();if (node->right){st.push(node->right);}if (node->left){st.push(node->left);}} }int main() {Tree tree;cout << "前序:" << endl;tree.PreOrder(tree.root);cout << "\n中序:" << endl;tree.InOrder(tree.root);cout << "\n后序:" << endl;tree.PostOrder(tree.root);cout << "\n廣度搜索:" << endl;tree.BFS(tree.root);cout << "\n深度搜索:" << endl;tree.DFS(tree.root);return 0; }三、運行方式:
每一步會提示輸入第幾層第幾個節點,如果節點不存在,輸入為0;
如下圖:
總結
以上是生活随笔為你收集整理的二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab实现彩色图像灰度化的三种方法
- 下一篇: 二叉搜索树C++(VS2017)