【二叉树】层次遍历

来源:互联网 发布:vevo lazr软件下载 编辑:程序博客网 时间:2024/06/01 10:25

题目链接:https://leetcode.com/problems/average-of-levels-in-binary-tree/

/** * 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 {public:    //  保存每一层的和    vector<double> res;    //  保存每一层节点的个数    vector<int> cnt;    vector<double> averageOfLevels(TreeNode* root) {        bfs(root,0);        for(int i=0;i<res.size();i++){            res[i]/=cnt[i];        }        return res;    }    //  参数:树,层数    void bfs(TreeNode* root,int level){        if(root==NULL){            return;        }        //  该节点是该层的第一个节点        if(level==res.size()){            res.push_back(root->val);            cnt.push_back(1);        }else{//  该节点不是该层的第一个节点            res[level]+=root->val;  //  更新该层节点总和            cnt[level]++;   //  该层节点计数加一        }        level++;            bfs(root->left,level);  //  层次遍历左子树        bfs(root->right,level); //  层次遍历右子树    }};


原创粉丝点击