程式語言 - LeetCode - C - 872. Leaf-Similar Trees



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

題目:


解答:

int dfs(struct TreeNode *n, int *r, int *p)
{
    if (!n) {
        return -1;
    }

    if (!n->left && !n->right) {
        r[(*p)++] = n->val;
        return 1;
    }

    dfs(n->left, r, p);
    dfs(n->right, r, p);
    return 0;
}

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool leafSimilar(struct TreeNode* root1, struct TreeNode* root2) {
    int i = 0;
    int p1 = 0;
    int p2 = 0;
    int r1[201] = { 0 };
    int r2[201] = { 0 };

    dfs(root1, r1, &p1);
    dfs(root2, r2, &p2);

    if (p1 != p2) {
        return false;
    }

    for (i = 0; i < p1; i++) {
        if (r1[i] != r2[i]) {
            return false;
        }
    }
    return true;
}