二叉树的层序遍历

    科技2026-01-07  12

    这个与上一篇的多个数组进行合并中有一个思想类似

    就是每次会向某容器中取出一个元素的同时,向容器中添加于这个元素有关的其他元素。

    多个数组进行合并是借助优先队列,但是这次是借助队列 代码如下

    #include <iostream> #include<vector> #include<queue> using namespace std; typedef struct BINARYNODE { int val; struct BINARYNODE* left; struct BINARYNODE* right; }TreeNode; //非递归层序遍历 class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > leverder(TreeNode* root) { // write code here vector<vector<int> > vv; queue<TreeNode* > qu; if (root != nullptr) { qu.push(root); } while (!qu.empty()) { vector<int> v; int levelSize = qu.size(); cout << "size=" << levelSize; for (int i = 0;i < levelSize;++i) { TreeNode* front = qu.front(); qu.pop(); v.push_back(front->val); if (front->left != nullptr) { qu.push(front->left); } if (front->right != nullptr) { qu.push(front->right); } } vv.push_back(v); } return vv; } };
    Processed: 0.014, SQL: 9