Dado un árbol binario y una clave, escriba una función que imprima los niveles de todas las claves en el árbol binario dado.
Por ejemplo, considere el siguiente árbol. Si la clave de entrada es 3, entonces su función debería devolver 1. Si la clave de entrada es 4, entonces su función debería devolver 3. Y para la clave que no está presente en key, entonces su función debería devolver 0.
C++
// An iterative C++ program to print levels // of all nodes #include <bits/stdc++.h> using namespace std; /* A tree node structure */ struct Node { int data; struct Node* left; struct Node* right; }; void printLevel(struct Node* root) { if (!root) return; // queue to hold tree node with level queue<pair<struct Node*, int> > q; q.push({root, 1}); // let root node be at level 1 pair<struct Node*, int> p; // Do level Order Traversal of tree while (!q.empty()) { p = q.front(); q.pop(); cout << "Level of " << p.first->data << " is " << p.second << "\n"; if (p.first->left) q.push({ p.first->left, p.second + 1 }); if (p.first->right) q.push({ p.first->right, p.second + 1 }); } } /* Utility function to create a new Binary Tree node */ struct Node* newNode(int data) { struct Node* temp = new struct Node; temp->data = data; temp->left = temp->right = NULL; return temp; } /* Driver function to test above functions */ int main() { struct Node* root = NULL; /* Constructing tree given in the above figure */ root = newNode(3); root->left = newNode(2); root->right = newNode(5); root->left->left = newNode(1); root->left->right = newNode(4); printLevel(root); return 0; }
Java
// Java program to print // levels of all nodes import java.util.LinkedList; import java.util.Queue; public class Print_Level_Btree { /* A tree node structure */ static class Node { int data; Node left; Node right; Node(int data){ this.data = data; left = null; right = null; } } // User defined class Pair to hold // the node and its level static class Pair{ Node n; int i; Pair(Node n, int i){ this.n = n; this.i = i; } } // function to print the nodes and // its corresponding level static void printLevel(Node root) { if (root == null) return; // queue to hold tree node with level Queue<Pair> q = new LinkedList<Pair>(); // let root node be at level 1 q.add(new Pair(root, 1)); Pair p; // Do level Order Traversal of tree while (!q.isEmpty()) { p = q.peek(); q.remove(); System.out.println("Level of " + p.n.data + " is " + p.i); if (p.n.left != null) q.add(new Pair(p.n.left, p.i + 1)); if (p.n.right != null) q.add(new Pair(p.n.right, p.i + 1)); } } /* Driver function to test above functions */ public static void main(String args[]) { Node root = null; /* Constructing tree given in the above figure */ root = new Node(3); root.left = new Node(2); root.right = new Node(5); root.left.left = new Node(1); root.left.right = new Node(4); printLevel(root); } } // This code is contributed by Sumit Ghosh
Python3
# Python3 program to print levels # of all nodes # Helper function that allocates a new # node with the given data and None # left and right pointers. class newNode: # Construct to create a new node def __init__(self, key): self.data = key self.left = None self.right = None def printLevel( root): if (not root): return # queue to hold tree node with level q = [] # let root node be at level 1 q.append([root, 1]) p = [] # Do level Order Traversal of tree while (len(q)): p = q[0] q.pop(0) print("Level of", p[0].data, "is", p[1]) if (p[0].left): q.append([p[0].left, p[1] + 1]) if (p[0].right): q.append([p[0].right, p[1] + 1 ]) # Driver Code if __name__ == '__main__': """ Let us create Binary Tree shown in above example """ root = newNode(3) root.left = newNode(2) root.right = newNode(5) root.left.left = newNode(1) root.left.right = newNode(4) printLevel(root) # This code is contributed by # Shubham Singh(SHUBHAMSINGH10)
C#
using System; using System.Collections.Generic; // C# program to print // levels of all nodes public class Print_Level_Btree { /* A tree node structure */ public class Node { public int data; public Node left; public Node right; public Node(int data) { this.data = data; left = null; right = null; } } // User defined class Pair to hold // the node and its level public class Pair { public Node n; public int i; public Pair(Node n, int i) { this.n = n; this.i = i; } } // function to print the nodes and // its corresponding level public static void printLevel(Node root) { if (root == null) { return; } // queue to hold tree node with level LinkedList<Pair> q = new LinkedList<Pair>(); // let root node be at level 1 q.AddLast(new Pair(root, 1)); Pair p; // Do level Order Traversal of tree while (q.Count > 0) { p = q.First.Value; q.RemoveFirst(); Console.WriteLine("Level of " + p.n.data + " is " + p.i); if (p.n.left != null) { q.AddLast(new Pair(p.n.left, p.i + 1)); } if (p.n.right != null) { q.AddLast(new Pair(p.n.right, p.i + 1)); } } } /* Driver function to test above functions */ public static void Main(string[] args) { Node root = null; /* Constructing tree given in the above figure */ root = new Node(3); root.left = new Node(2); root.right = new Node(5); root.left.left = new Node(1); root.left.right = new Node(4); printLevel(root); } } // This code is contributed by Shrikant13
Javascript
<script> // Javascript program to print // levels of all nodes class Node { constructor(data) { this.left = null; this.right = null; this.data = data; } } // function to print the nodes and // its corresponding level function printLevel(root) { if (root == null) return; // queue to hold tree node with level let q = []; // let root node be at level 1 q.push([root, 1]); let p; // Do level Order Traversal of tree while (q.length > 0) { p = q[0]; q.shift(); document.write("Level of " + p[0].data + " is " + p[1] + "</br>"); if (p[0].left != null) q.push([p[0].left, p[1] + 1]); if (p[0].right != null) q.push([p[0].right, p[1] + 1]); } } let root = null; /* Constructing tree given in the above figure */ root = new Node(3); root.left = new Node(2); root.right = new Node(5); root.left.left = new Node(1); root.left.right = new Node(4); printLevel(root); // This code is contributed by suresh07. </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