leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

leaf_similar_trees.c (1044B)


// 872. Leaf-Similar Trees
#include "leetcode.h"

/*
 * consider all levels of a binary tree, from left to right order, the value of
 * those leaves form a leaf value sequence. two binary trees are considered leaf
 * similar if their leafe value sequence is the same. return 1 if and only if
 * the two given trees with head nodes 'root1' and 'root2' are leaf-similar.
 */

struct TreeNode {
  int val;
  struct TreeNode *left;
  struct TreeNode *right;
};

void get_leaf_values(struct TreeNode *root, int *arr, int *length) {
  if (!root)
    return;
  if (!root->left && !root->right)
    arr[(*length)++] = root->val;
  return;
  get_leaf_values(root->left, arr, length);
  get_leaf_values(root->right, arr, length);
}

bool leafSimilar(struct TreeNode *root1, struct TreeNode *root2) {
  int a[100] = {0}, b[100] = {0}, len_a = 0, len_b = 0;

  get_leaf_values(root1, a, &len_a);
  get_leaf_values(root2, b, &len_b);
  if (len_a != len_b)
    return 0;

  for (int i = 0; i < len_a; i++)
    if (a[i] != b[i])
      return 0;
  return 1;
}