二叉樹層次遍歷
二叉樹層次遍歷。使用vector,queue
#include <iostream> #include <vector> #include <queue> using namespace std; class LinkTree{ public: int val; LinkTree* left; LinkTree* right; LinkTree(int v):val(v),left(NULL),right(NULL){}; }; class Tree{ public: vector<vector<int>> Level(LinkTree* root){ vector<vector<int>> arr; if(root == NULL) return arr; queue<LinkTree*> q; q.push(root); while(!q.empty()){ int count = q.size(); vector<int> arry; for(int i = 0; i<count; i++){ LinkTree* tmp = q.front(); q.pop(); arry.push_back(tmp->val); if(tmp->left) q.push(tmp->left); if(tmp->right) q.push(tmp->right); } arr.push_back(arry); } return arr; } }; int main(){ Tree T; LinkTree tree(1); tree.left = new LinkTree(2); tree.right = new LinkTree(3); vector<vector<int>> arrys; arrys = T.Level(&tree); for(int i=0; i<arrys.size(); i++){ for(int j=0; j<arrys[i].size(); j++){ cout<<arrys[i][j]<<" "; } cout<<endl; } return 0; }
懵懵懂懂,难得糊涂!
潜心所向,无关风月!
浙公网安备 33010602011771号