数据结构和算法学习(三)广度优先搜索

层序遍历就是逐层遍历树结构。

广度优先搜索是一种广泛运用在树或图这类数据结构中,遍历或搜索的算法。 该算法从一个根节点开始,首先访问节点本身。 然后遍历它的相邻节点,其次遍历它的二级邻节点、三级邻节点,以此类推。

当我们在树中进行广度优先搜索时,我们访问的节点的顺序是按照层序遍历顺序的。
leetcode:
102. 二叉树的层次遍历

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

解如下

vector<vector<int>> levelOrder(TreeNode* root) {
            vector < vector<int>>result;
            if (root == NULL)return result;
            std::queue<TreeNode*>que;
            que.push(root);
            TreeNode*p = root;
            int len = que.size();
            while (!que.empty())
            {
                vector<int>vec;
                len = que.size();
                while (len--)
                {
                    p = que.front();
                    que.pop();
                    vec.push_back(p->val);
                    if (p->left)que.push(p->left);
                    if (p->right)que.push(p->right);
                }
                result.push_back(vec);
            }
            return result;
        }

猜你喜欢

转载自blog.csdn.net/qq_21031727/article/details/80080714