逆序的BSF输出
来源:互联网 发布:新版mac mini 发布时间 编辑:程序博客网 时间:2024/05/21 12:17
查看逆序的BSF输出如图所示:
这里,我们首先创建一颗二叉树,并使用先序遍历,依次计算其中每个节点的深度,其次利用BSF算法,利用deque获得序列,但同时使用vector只进行push_back无pop_front
这样,vector中就是根据BSF优先算法获得的序列,但还是没有逆序,就利用深度的不同获得,依次递减,进行输出:
#include "stdafx.h"#include<iostream>#include<vector>#include<deque>using namespace std;struct Node{char val;int Depth;Node* left;Node* right;Node(char x=0):val(x),left(NULL),right(NULL),Depth(0){}};Node* g_root;vector<Node*>g_vec;int GetNodeDepth(Node* root,Node* cur,int layer){int i=-1;if(NULL!=root){if(root==cur){return layer;}i=GetNodeDepth(root->left,cur,layer+1);if(i!=-1){return i;}i=GetNodeDepth(root->right,cur,layer+1);if(i!=-1)return i;}return i;}void Travel(Node* root){if(NULL==root){return ;}int depth=GetNodeDepth(g_root,root,0);root->Depth=depth;Travel(root->left);Travel(root->right);}void BSF(Node* root){if(NULL==root){return;}deque<Node*>deq;deq.push_back(root);g_vec.push_back(root);while(!deq.empty()){Node* tmp=deq.front();deq.pop_front();if(tmp->left!=NULL){deq.push_back(tmp->left);g_vec.push_back(tmp->left);}if(tmp->right!=NULL){deq.push_back(tmp->right);g_vec.push_back(tmp->right);}}}int main() { Node *tmp ; Node* root = new Node('A'); g_root=root;tmp = new Node('B'); root->left = tmp ; tmp = new Node('C'); root->right = tmp; tmp = new Node('D'); root->left->right = tmp; tmp = new Node('E'); root->right->left = tmp; tmp=new Node('F');root->right->right=tmp;tmp=new Node('G');root->right->left->left=tmp;tmp=new Node('H');root->right->left->right=tmp;//首先遍历整个二叉树,同时填充深度Travel(g_root);//使用BSF光度优先算法进行g_vec的填充BSF(g_root);//逆序输出vector<Node*>::reverse_iterator pitr=g_vec.rbegin();int cur=(*pitr)->Depth;for(int i=cur;i>=0;i--){ vector<Node*>::iterator itr=g_vec.begin();for(itr=g_vec.begin();itr!=g_vec.end();itr++){if(i==(*itr)->Depth){cout<<(*itr)->val<<" ";}}cout<<endl;}return 0; }
0 0
- 逆序的BSF输出
- BSF
- 字符串的逆序输出
- 单链表的逆序输出
- 单链表的逆序输出
- 整数的逆序输出
- 单链表的逆序输出
- 数组的逆序输出
- 字符的逆序输出
- 逆序输出的数列
- 单链表的逆序输出
- 数组的逆序输出
- 字符串的逆序输出
- 数组的逆序输出
- 输出三位数的逆序
- 数字字符串的逆序输出
- 任意数的逆序输出
- 链表的逆序输出
- HDU 3729 I'm Telling the Truth
- hdu 1700 Points on Cycle(几何)(中等)
- 链表的创造(我的困难主要在这)
- Class 类的用法
- 15/8/3/网络连接,UDP,DOM,SAX,JSON
- 逆序的BSF输出
- QDBus与gdbus的数据传递详解
- HDU 1021 Fibonacci Again
- Delphi7第八天---小型图书管理系统
- 项目分析(2)
- 递归 N皇后问题
- HDU 5344 MZL's xor
- HSACM 1680 能量项链
- Excel VBA如何创建可撤销操作的宏