日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)

發布時間:2025/4/16 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树的前序中序后序递归查找,深度,广度搜索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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。