From b74ad090acd75a92913af2b1e150d5f6cefc904a Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Thu, 18 Jul 2024 17:51:58 +0530 Subject: [PATCH] Create 1530. Number of Good Leaf Nodes Pairs --- 1530. Number of Good Leaf Nodes Pairs | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 1530. Number of Good Leaf Nodes Pairs diff --git a/1530. Number of Good Leaf Nodes Pairs b/1530. Number of Good Leaf Nodes Pairs new file mode 100644 index 0000000..b099adf --- /dev/null +++ b/1530. Number of Good Leaf Nodes Pairs @@ -0,0 +1,37 @@ +class Solution { +private: + int count = 0; + const int MAX_DISTANCE = 10; + + vector dfs(TreeNode* node, int distance) { + if (!node) return vector(MAX_DISTANCE + 1, 0); + + if (!node->left && !node->right) { + vector res(MAX_DISTANCE + 1, 0); + res[1] = 1; + return res; + } + + vector left = dfs(node->left, distance); + vector right = dfs(node->right, distance); + + for (int i = 1; i <= distance; i++) { + for (int j = 1; j <= distance - i; j++) { + count += left[i] * right[j]; + } + } + + vector res(MAX_DISTANCE + 1, 0); + for (int i = 1; i < MAX_DISTANCE; i++) { + res[i + 1] = left[i] + right[i]; + } + + return res; + } + +public: + int countPairs(TreeNode* root, int distance) { + dfs(root, distance); + return count; + } +};