• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

c++实现版本层次遍历功能

c++ 搞代码 4年前 (2022-01-06) 30次浏览 已收录 0个评论

这篇文章主要介绍了c++实现版本层次遍历功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

采用队列实现,BFS,功能:BFS层次遍历打印、按照节点将BFS序列化成一个字符。

 #include  #include  #include  using namespace std; struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int val) : val(val), left(nullptr), right(nullptr) {} }; //迭代打印层次遍历 void BFSTraverse(TreeNode* root) { queue nodeQueue; nodeQueue.push(root);//先把第一个先放到列表里面 while (!nodeQueue.empty()) { int sz = nodeQueue.size();//这个是为了一层一层的数值进行处理 for (int i = 0; i <sz; i++) { //那就取出那个节点进行处理 TreeNode* node = nodeQueue.front(); cout <val <left) { nodeQueue.push(node->left); } if (node->right) { nodeQueue.push(node->right); } } } } //按照节点进行序列化成一个字符串 string serialByBFS(TreeNode* root) { if (root == nullptr) return "#!"; queue nodeQueue; nodeQueue.push(root); string res; while (!nodeQueue.empty()) { int sz = nodeQueue.size(); for (int i = 0; i val) + '!'; nodeQueue.push(node->left); nodeQueue.push(node->right); } else { res = res + "#!"; } } } return res; } int main3() { TreeNode* head = new TreeNode(5); head->left = new TreeNode(3); head->right = new TreeNode(8); head->left->left = new TreeNode(1); head->left->right = new TreeNode(2); head->right->left = new TreeNode(4); head->right->right = new TreeNode(5); head->right->left->left = new<i style="color:transparent">来源gaodai$ma#com搞$$代**码)网</i> TreeNode(6); head->right->right->left = new TreeNode(9); head->right->right->right = new TreeNode(11); cout << "traverse1:"; BFSTraverse(head); cout << "\nserial binary:"; string res = serialByBFS(head); cout << res << endl; return 0; }

ps:下面看下C++层次遍历

 /* *   description:层次遍历 *   writeby:    nick *   date:       2012-10-22 23:56 */ #include  #include  using namespace std; struct node { int item; node *l, *r; node(int n) { item=n; l=0; r=0; } }; typedef node *link; void traverse(link h, void visit(link)) { queue q; q.push(h); while(!q.empty()) { h = q.front(); q.pop(); visit(h); if(h->l != 0) q.push(h->l); if(h->r !=0) q.push(h->r); } } void visit(link p) { cout <item <l = new node(5); root->r = new node(6); root->l->l = new node(7); root->l->r = new node(8); cout << "中文"; traverse(root, visit); return 0; }

到此这篇关于c++实现版本层次遍历功能的文章就介绍到这了,更多相关c++层次遍历内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是c++实现版本层次遍历功能的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:c++实现版本层次遍历功能
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址