代码随想录算法训练营第16天|104.559.111.222

69 阅读1分钟

104.559

第一思路

使用层序遍历,每一层使深度+1 559代码

class Solution {
public:
    int maxDepth(Node* root) {
        // 层序遍历
        int res = 0;
        queue<Node*> que;
        if (root != nullptr) que.push(root);
        while (!que.empty()) {
            res++;
            int size = que.size();
            while (size--) {
                Node* node = que.front();
                que.pop();
                if (!node->children.empty()) {
                    for (auto n:node->children) {
                        que.push(n);
                    }

                }
            }
        }
        return res;
        
    }
};

一次ac

总结

回溯法暂时没看懂

111

总结

前序遍历还是没懂

222

第一思路

层序遍历进行统计

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    // 第一思路,层序遍历统计
    int countNodes(TreeNode* root) {
        int res = 0;
        queue<TreeNode*> que;
        if (root != nullptr) que.push(root);

        while (!que.empty()) {
            int size = que.size();
            res += size;
            while (size--) {
                TreeNode* node = que.front();
                que.pop();
                if ( node->left) que.push(node->left);
                if (node->right) que.push(node->right);
            }
        }
        return res;

    }
};

一次ac

对于利用完全二叉树特性的解法,一开始没想到,然后不是很理解,看了一遍视频和文字版后理解了.