【二叉树】层次遍历

xiaoxiao2021-02-28  103

题目链接: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); // 层次遍历右子树 } };

转载请注明原文地址: https://www.6miu.com/read-73637.html

最新回复(0)