程式語言 - LeetCode - C - 1161. Maximum Level Sum of a Binary Tree



參考資訊:
https://www.cnblogs.com/grandyang/p/15022629.html

題目:


解答:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxLevelSum(struct TreeNode *root)
{
    int r = 0;
    int st = 0;
    int ep = 0;
    int max = 0;
    int level = 0;
    struct TreeNode *buf[10000] = { 0 };

    if (!root) {
        return 0;
    }

    r = 1;
    buf[ep++] = root;
    max = root->val;

    while ((ep - st) > 0) {
        int cnt = 0;
        int cc = 0;
        int s0 = st;
        int s1 = ep;

        for (cc = s0; cc < s1; cc++) {
            st += 1;
            cnt += buf[cc]->val;

            if (buf[cc]->left) {
                buf[ep++] = buf[cc]->left;
            }

            if (buf[cc]->right) {
                buf[ep++] = buf[cc]->right;
            }
        }

        level += 1;
        if (cnt > max) {
            max = cnt;
            r = level;
        }
    }

    return r;
}