Dado un entero ‘K’ y un árbol binario en formato de string. Cada Node de un árbol tiene un valor en el rango de 0 a 9. Necesitamos encontrar la suma de elementos en el nivel K-ésimo desde la raíz. La raíz está en el nivel 0.
El árbol se da en la forma: (valor de Node (subárbol izquierdo) (subárbol derecho))
Ejemplos:
C++
// C++ implementation to find sum of // digits of elements at k-th level #include <bits/stdc++.h> using namespace std; // Function to find sum of digits // of elements at k-th level int sumAtKthLevel(string tree, int k) { int level = -1; int sum = 0; // Initialize result int n = tree.length(); for (int i=0; i<n; i++) { // increasing level number if (tree[i] == '(') level++; // decreasing level number else if (tree[i] == ')') level--; else { // check if current level is // the desired level or not if (level == k) sum += (tree[i]-'0'); } } // required sum return sum; } // Driver program to test above int main() { string tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; int k = 2; cout << sumAtKthLevel(tree, k); return 0; }
Java
// Java implementation to find sum of // digits of elements at k-th level class GfG { // Function to find sum of digits // of elements at k-th level static int sumAtKthLevel(String tree, int k) { int level = -1; int sum = 0; // Initialize result int n = tree.length(); for (int i=0; i<n; i++) { // increasing level number if (tree.charAt(i) == '(') level++; // decreasing level number else if (tree.charAt(i) == ')') level--; else { // check if current level is // the desired level or not if (level == k) sum += (tree.charAt(i)-'0'); } } // required sum return sum; } // Driver program to test above public static void main(String[] args) { String tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; int k = 2; System.out.println(sumAtKthLevel(tree, k)); } }
Python3
# Python3 implementation to find sum of # digits of elements at k-th level # Function to find sum of digits # of elements at k-th level def sumAtKthLevel(tree, k) : level = -1 sum = 0 # Initialize result n = len(tree) for i in range(n): # increasing level number if (tree[i] == '(') : level += 1 # decreasing level number else if (tree[i] == ')'): level -= 1 else: # check if current level is # the desired level or not if (level == k) : sum += (ord(tree[i]) - ord('0')) # required sum return sum # Driver Code if __name__ == '__main__': tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))" k = 2 print(sumAtKthLevel(tree, k)) # This code is contributed by # Shubham Singh(SHUBHAMSINGH10)
C#
// C# implementation to find sum of // digits of elements at k-th level using System; class GfG { // Function to find sum of digits // of elements at k-th level static int sumAtKthLevel(string tree, int k) { int level = -1; int sum = 0; // Initialize result int n = tree.Length; for (int i = 0; i < n; i++) { // increasing level number if (tree[i] == '(') level++; // decreasing level number else if (tree[i] == ')') level--; else { // check if current level is // the desired level or not if (level == k) sum += (tree[i]-'0'); } } // required sum return sum; } // Driver code public static void Main() { string tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; int k = 2; Console.Write(sumAtKthLevel(tree, k)); } } // This code is contributed by Ita_c
Javascript
<script> // Javascript implementation to find sum of // digits of elements at k-th level // Function to find sum of digits // of elements at k-th level function sumAtKthLevel(tree, k) { let level = -1; // Initialize result let sum = 0; let n = tree.length; for(let i = 0; i < n; i++) { // Increasing level number if (tree[i] == '(') level++; // Decreasing level number else if (tree[i] == ')') level--; else { // Check if current level is // the desired level or not if (level == k) sum += (tree[i] - '0'); } } // Required sum return sum; } // Driver code let tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; let k = 2; document.write(sumAtKthLevel(tree, k)); // This code is contributed by avanitrachhadiya2155 </script>
C++
// C++ implementation to find sum of // digits of elements at k-th level #include <bits/stdc++.h> using namespace std; // Recursive Function to find sum of digits // of elements at k-th level int sumAtKthLevel(string tree, int k,int &i,int level) { if(tree[i++]=='(') { // if subtree is null, just like if root == NULL if(tree[i] == ')') return 0; int sum=0; // Consider only level k node to be part of the sum if(level == k) sum = tree[i]-'0'; // Recur for Left Subtree int leftsum = sumAtKthLevel(tree,k,++i,level+1); // Recur for Right Subtree int rightsum = sumAtKthLevel(tree,k,++i,level+1); // Taking care of ')' after left and right subtree ++i; return sum+leftsum+rightsum; } } // Driver program to test above int main() { string tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; int k = 2; int i=0; cout << sumAtKthLevel(tree, k,i,0); return 0; }
Java
// Java implementation to find sum of // digits of elements at k-th level class GFG { static int i; // Recursive Function to find sum of digits // of elements at k-th level static int sumAtKthLevel(String tree, int k, int level) { if (tree.charAt(i++) == '(') { // if subtree is null, just like if root == null if (tree.charAt(i) == ')') return 0; int sum = 0; // Consider only level k node to be part of the sum if (level == k) sum = tree.charAt(i) - '0'; // Recur for Left Subtree ++i; int leftsum = sumAtKthLevel(tree, k, level + 1); // Recur for Right Subtree ++i; int rightsum = sumAtKthLevel(tree, k, level + 1); // Taking care of ')' after left and right subtree ++i; return sum + leftsum + rightsum; } return Integer.MIN_VALUE; } // Driver code public static void main(String[] args) { String tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; int k = 2; i = 0; System.out.print(sumAtKthLevel(tree, k, 0)); } } // This code is contributed by 29AjayKumar
Python
# Python implementation to find sum of # digits of elements at k-th level # Recursive Function to find sum of digits # of elements at k-th level def sumAtKthLevel(tree, k, i, level): if(tree[i[0]] == '('): i[0] += 1 # if subtree is null, just like if root == NULL if(tree[i[0]] == ')'): return 0 sum = 0 # Consider only level k node to be part of the sum if(level == k): sum = int(tree[i[0]]) # Recur for Left Subtree i[0] += 1 leftsum = sumAtKthLevel(tree, k, i, level + 1) # Recur for Right Subtree i[0] += 1 rightsum = sumAtKthLevel(tree, k, i, level + 1) # Taking care of ')' after left and right subtree i[0] += 1 return sum + leftsum + rightsum # Driver program to test above tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))" k = 2 i = [0] print(sumAtKthLevel(tree, k, i, 0)) # This code is contributed by SHUBHAMSINGH10
C#
// C# implementation to find sum of // digits of elements at k-th level using System; class GFG { static int i; // Recursive Function to find sum of digits // of elements at k-th level static int sumAtKthLevel(String tree, int k, int level) { if (tree[i++] == '(') { // if subtree is null, just like if root == null if (tree[i] == ')') return 0; int sum = 0; // Consider only level k node to be part of the sum if (level == k) sum = tree[i] - '0'; // Recur for Left Subtree ++i; int leftsum = sumAtKthLevel(tree, k, level + 1); // Recur for Right Subtree ++i; int rightsum = sumAtKthLevel(tree, k, level + 1); // Taking care of ')' after left and right subtree ++i; return sum + leftsum + rightsum; } return int.MinValue; } // Driver code public static void Main(String[] args) { String tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; int k = 2; i = 0; Console.Write(sumAtKthLevel(tree, k, 0)); } } // This code is contributed by Rajput-Ji
Javascript
<script> // Javascript implementation to find sum of // digits of elements at k-th level // Recursive Function to find sum of digits // of elements at k-th level function sumAtKthLevel(tree,k,level) { if (tree[i++] == '(') { // if subtree is null, just like if root == null if (tree[i] == ')') return 0; let sum = 0; // Consider only level k node to be part of the sum if (level == k) sum = tree[i] - '0'; // Recur for Left Subtree ++i; let leftsum = sumAtKthLevel(tree, k, level + 1); // Recur for Right Subtree ++i; let rightsum = sumAtKthLevel(tree, k, level + 1); // Taking care of ')' after left and right subtree ++i; return sum + leftsum + rightsum; } return Number.MIN_VALUE; } // Driver code let tree = "(0(5(6()())(4()(9()())))(7(1()())(3()())))"; let k = 2; let i = 0; document.write(sumAtKthLevel(tree, k, 0)); // This code is contributed by rag2127 </script>
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA