/* * ========================================================================= * * FileName: leetcode_637.cpp * * Description: * * Version: 1.0 * Created: 2018-11-21 09:19:45 * Last Modified: 2018-11-21 09:20:21 * Revision: none * Compiler: gcc * * Author: zt () * Organization: * * ========================================================================= */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode ( int x ) : val ( x ), left ( NULL ), right ( NULL ) {} }; class Solution { public: vector averageOfLevels ( TreeNode* root ) { vector ret; if ( !root ) return ret; vector tmp; tmp.push_back ( root ); int c = 0; int e = 1; double t = 0.0; int it = 0; for ( ;; ) { t += tmp[c]->val; ++it; if ( tmp[c]->left ) tmp.push_back ( tmp[c]->left ); if ( tmp[c]->right ) tmp.push_back ( tmp[c]->right ); ++c; if ( c == e ) { t /= it; it = 0; ret.push_back ( t ); t = 0; if ( e == tmp.size() ) break; else e = tmp.size(); } } return ret; } }; int main ( int argc, char* argv[] ) { ( void ) argc; ( void ) argv; return 0; }