算法训练:Binary Tree Level Order Traversal

来源:互联网 发布:网络运营需要什么技术 编辑:程序博客网 时间:2024/06/05 18:47

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


题目描述:

          给定一棵二叉树,要求返回每层节点的值(从左往右,一层一层)。

       例如,给定的二叉树[3,9,20,null,null,15,7]为,返回值为[[3],[9,20],[15,7]]

解题思路:

      采用BFS的思想进行遍历树,定义一个变量,用来记录每层节点的个数,党每层访问结束后,将保存的一层的节点的值的数组插入到结果集中。

    vector<vector<int>> levelOrder(TreeNode* root) {        vector<int> pair;        vector<vector<int>> result;                vector<TreeNode*> s;        s.push_back(root);                int count=1;//每层的节点个数                while(!s.empty()){            TreeNode* p=s.front();            pair.push_back(p->val);            s.erase(s.begin());            count--;                        if(p->left!=NULL){                s.push_back(p->left);            }            if(p->right!=NULL){                s.push_back(p->right);            }                       if(!pair.empty()&&count==0){                result.push_back(pair);                pair.clear();                count=s.size();            }        }        return result;    }

运行结果:

Your Input
[3,9,20,6,null,15,7,8]
Your answer
[[3],[9,20],[6,15,7],[8]]
Expected answer
[[3],[9,20],[6,15,7],[8]]











0 0