算法练习笔记(八)—— 树的BFS遍历

来源:互联网 发布:数据加载慢如何解决 编辑:程序博客网 时间:2024/04/30 02:44

BFS遍历,广度优先搜索,在用法上来说和这周所学的贪心算法有着很大程度上的相似

与深度优先算法不同的是,算法会在遍历完一棵树中每一层的每个结点之后,才会转到下一层继续,在这一基础上,二维数组和队列将会对算法起到很大的帮助

题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal/#/description

题目:Binary Tree Level Order Traversal

描述:

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3   / \  9  20    /  \   15   7

return its level order traversal as:

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

BFS解答:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {        vector<vector<int>> result;    public:    void BFS(TreeNode * root, int dep){        if(!root)return;        if(result.size() == dep)            result.push_back(vector<int>());        result[dep].push_back(root -> val);        BFS(root -> left, dep + 1);        BFS(root -> right, dep + 1);    }    vector<vector<int>> levelOrder(TreeNode* root) {        BFS(root, 0);        return result;    }};


0 0
原创粉丝点击