Dado un árbol binario, imprima la vista derecha del mismo. La vista derecha de un árbol binario es un conjunto de Nodes visibles cuando se visita el árbol desde el lado derecho.
Ejemplos:
C++
// C++ program to print right view of // Binary Tree #include<bits/stdc++.h> using namespace std; // A Binary Tree Node struct Node { int data; struct Node *left, *right; }; // Utility function to create a new tree node Node* newNode(int data) { Node *temp = new Node; temp->data = data; temp->left = temp->right = NULL; return temp; } // function to print right view of // binary tree void printRightView(Node* root) { if (!root) return; queue<Node*> q; q.push(root); while (!q.empty()) { // number of nodes at current level int n = q.size(); // Traverse all nodes of current level for(int i = 1; i <= n; i++) { Node* temp = q.front(); q.pop(); // Print the right most element // at the level if (i == n) cout<<temp->data<<" "; // Add left node to queue if (temp->left != NULL) q.push(temp->left); // Add right node to queue if (temp->right != NULL) q.push(temp->right); } } } // Driver program to test above functions int main() { // Let's construct the tree as // shown in example Node* root = newNode(10); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(7); root->left->right = newNode(8); root->right->right = newNode(15); root->right->left = newNode(12); root->right->right->left = newNode(14); printRightView(root); }
Java
// Java program to print right view of Binary // Tree import java.util.*; public class PrintRightView { // Binary tree node private static class Node { int data; Node left, right; public Node(int data) { this.data = data; this.left = null; this.right = null; } } // function to print right view of binary tree private static void printRightView(Node root) { if (root == null) return; Queue<Node> queue = new LinkedList<>(); queue.add(root); while (!queue.isEmpty()) { // number of nodes at current level int n = queue.size(); // Traverse all nodes of current level for (int i = 1; i <= n; i++) { Node temp = queue.poll(); // Print the right most element at // the level if (i == n) System.out.print(temp.data + " "); // Add left node to queue if (temp.left != null) queue.add(temp.left); // Add right node to queue if (temp.right != null) queue.add(temp.right); } } } // Driver code public static void main(String[] args) { // construct binary tree as shown in // above diagram Node root = new Node(10); root.left = new Node(2); root.right = new Node(3); root.left.left = new Node(7); root.left.right = new Node(8); root.right.right = new Node(15); root.right.left = new Node(12); root.right.right.left = new Node(14); printRightView(root); } }
Python3
# Python3 program to print right view of # Binary Tree # Binary Tree Node """ utility that allocates a newNode with the given key """ class newNode: # Construct to create a newNode def __init__(self, key): self.data = key self.left = None self.right = None self.hd = 0 # function to print right view of # binary tree def printRightView(root): if (not root): return q = [] q.append(root) while (len(q)): # number of nodes at current level n = len(q) # Traverse all nodes of current level for i in range(1, n + 1): temp = q[0] q.pop(0) # Print the right most element # at the level if (i == n) : print(temp.data, end = " " ) # Add left node to queue if (temp.left != None) : q.append(temp.left) # Add right node to queue if (temp.right != None) : q.append(temp.right) # Driver Code if __name__ == '__main__': root = newNode(10) root.left = newNode(2) root.right = newNode(3) root.left.left = newNode(7) root.left.right = newNode(8) root.right.right = newNode(15) root.right.left = newNode(12) root.right.right.left = newNode(14) printRightView(root) # This code is contributed by # Shubham Singh(SHUBHAMSINGH10)
C#
// C# program to print right view // of Binary Tree using System; using System.Collections.Generic; public class PrintRightView { // Binary tree node private class Node { public int data; public Node left, right; public Node(int data) { this.data = data; this.left = null; this.right = null; } } // function to print right view of binary tree private static void printRightView(Node root) { if (root == null) return; Queue<Node> queue = new Queue<Node>(); queue.Enqueue(root); while (queue.Count != 0) { // number of nodes at current level int n = queue.Count; // Traverse all nodes of current level for (int i = 1; i <= n; i++) { Node temp = queue.Dequeue(); // Print the right most element at // the level if (i == n) Console.Write(temp.data + " "); // Add left node to queue if (temp.left != null) queue.Enqueue(temp.left); // Add right node to queue if (temp.right != null) queue.Enqueue(temp.right); } } } // Driver code public static void Main(String[] args) { // construct binary tree as shown in // above diagram Node root = new Node(10); root.left = new Node(2); root.right = new Node(3); root.left.left = new Node(7); root.left.right = new Node(8); root.right.right = new Node(15); root.right.left = new Node(12); root.right.right.left = new Node(14); printRightView(root); } } // This code is contributed 29AjayKumar
Javascript
<script> // JavaScript program to print right view // of Binary Tree // Binary tree node class Node { constructor(data) { this.data = data; this.left = null; this.right = null; } } // function to print right view of binary tree function printRightView(root) { if (root == null) return; var queue = []; queue.push(root); while (queue.length != 0) { // number of nodes at current level var n = queue.length; // Traverse all nodes of current level for (var i = 1; i <= n; i++) { var temp = queue.shift(); // Print the right most element at // the level if (i == n) document.write(temp.data + " "); // Add left node to queue if (temp.left != null) queue.push(temp.left); // Add right node to queue if (temp.right != null) queue.push(temp.right); } } } // Driver code // construct binary tree as shown in // above diagram var root = new Node(10); root.left = new Node(2); root.right = new Node(3); root.left.left = new Node(7); root.left.right = new Node(8); root.right.right = new Node(15); root.right.left = new Node(12); root.right.right.left = new Node(14); printRightView(root); </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