Hemos proporcionado un árbol de búsqueda binario y queremos eliminar los Nodes hoja del árbol de búsqueda binario.
Ejemplos:
C++
// C++ program to delete leaf Node from // binary search tree. #include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node* left; struct Node* right; }; // Create a newNode in binary search tree. struct Node* newNode(int data) { struct Node* temp = new Node; temp->data = data; temp->left = temp->right = NULL; return temp; } // Insert a Node in binary search tree. struct Node* insert(struct Node* root, int data) { if (root == NULL) return newNode(data); if (data < root->data) root->left = insert(root->left, data); else if (data > root->data) root->right = insert(root->right, data); return root; } // Function for inorder traversal in a BST. void inorder(struct Node* root) { if (root != NULL) { inorder(root->left); cout << root->data << " "; inorder(root->right); } } // Delete leaf nodes from binary search tree. struct Node* leafDelete(struct Node* root) { if (root == NULL) return NULL; if (root->left == NULL && root->right == NULL) { free(root); return NULL; } // Else recursively delete in left and right // subtrees. root->left = leafDelete(root->left); root->right = leafDelete(root->right); return root; } // Driver code int main() { struct Node* root = NULL; root = insert(root, 20); insert(root, 10); insert(root, 5); insert(root, 15); insert(root, 30); insert(root, 25); insert(root, 35); cout << "Inorder before Deleting the leaf Node." << endl; inorder(root); cout << endl; leafDelete(root); cout << "INorder after Deleting the leaf Node." << endl; inorder(root); return 0; }
Java
// Java program to delete leaf Node from // binary search tree. class GfG { static class Node { int data; Node left; Node right; } // Create a newNode in binary search tree. static Node newNode(int data) { Node temp = new Node(); temp.data = data; temp.left = null; temp.right = null; return temp; } // Insert a Node in binary search tree. static Node insert(Node root, int data) { if (root == null) return newNode(data); if (data < root.data) root.left = insert(root.left, data); else if (data > root.data) root.right = insert(root.right, data); return root; } // Function for inorder traversal in a BST. static void inorder(Node root) { if (root != null) { inorder(root.left); System.out.print(root.data + " "); inorder(root.right); } } // Delete leaf nodes from binary search tree. static Node leafDelete(Node root) { if (root == null) { return null; } if (root.left == null && root.right == null) { return null; } // Else recursively delete in left and right // subtrees. root.left = leafDelete(root.left); root.right = leafDelete(root.right); return root; } // Driver code public static void main(String[] args) { Node root = null; root = insert(root, 20); insert(root, 10); insert(root, 5); insert(root, 15); insert(root, 30); insert(root, 25); insert(root, 35); System.out.println("Inorder before Deleting the leaf Node. "); inorder(root); System.out.println(); leafDelete(root); System.out.println("INorder after Deleting the leaf Node. "); inorder(root); } } // This code is contributed by Prerna saini
Python3
# Python 3 program to delete leaf # Node from binary search tree. # Create a newNode in binary search tree. class newNode: # Constructor to create a new node def __init__(self, data): self.data = data self.left = None self.right = None # Insert a Node in binary search tree. def insert(root, data): if root == None: return newNode(data) if data < root.data: root.left = insert(root.left, data) else if data > root.data: root.right = insert(root.right, data) return root # Function for inorder traversal in a BST. def inorder(root): if root != None: inorder(root.left) print(root.data, end = " ") inorder(root.right) # Delete leaf nodes from binary search tree. def leafDelete(root): if root == None: return None if root.left == None and root.right == None: return None # Else recursively delete in left # and right subtrees. root.left = leafDelete(root.left) root.right = leafDelete(root.right) return root # Driver code if __name__ == '__main__': root = None root = insert(root, 20) insert(root, 10) insert(root, 5) insert(root, 15) insert(root, 30) insert(root, 25) insert(root, 35) print("Inorder before Deleting the leaf Node.") inorder(root) leafDelete(root) print() print("INorder after Deleting the leaf Node.") inorder(root) # This code is contributed by PranchalK
C#
// C# program to delete leaf Node from // binary search tree. using System; class GfG { class Node { public int data; public Node left; public Node right; } // Create a newNode in binary search tree. static Node newNode(int data) { Node temp = new Node(); temp.data = data; temp.left = null; temp.right = null; return temp; } // Insert a Node in binary search tree. static Node insert(Node root, int data) { if (root == null) return newNode(data); if (data < root.data) root.left = insert(root.left, data); else if (data > root.data) root.right = insert(root.right, data); return root; } // Function for inorder traversal in a BST. static void inorder(Node root) { if (root != null) { inorder(root.left); Console.Write(root.data + " "); inorder(root.right); } } // Delete leaf nodes from binary search tree. static Node leafDelete(Node root) { if (root == null) { return null; } if (root.left == null && root.right == null) { return null; } // Else recursively delete in // left and right subtrees. root.left = leafDelete(root.left); root.right = leafDelete(root.right); return root; } // Driver code public static void Main(String[] args) { Node root = null; root = insert(root, 20); insert(root, 10); insert(root, 5); insert(root, 15); insert(root, 30); insert(root, 25); insert(root, 35); Console.WriteLine("Inorder before Deleting" + "the leaf Node. "); inorder(root); Console.WriteLine(); leafDelete(root); Console.WriteLine("INorder after Deleting" + "the leaf Node. "); inorder(root); } } // This code has been contributed // by PrinciRaj1992
Javascript
<script> // JavaScript program to delete leaf Node from // binary search tree. class Node { constructor() { this.data = 0; this.left = null; this.right = null; } } // Create a newNode in binary search tree. function newNode(data) { var temp = new Node(); temp.data = data; temp.left = null; temp.right = null; return temp; } // Insert a Node in binary search tree. function insert(root , data) { if (root == null) return newNode(data); if (data < root.data) root.left = insert(root.left, data); else if (data > root.data) root.right = insert(root.right, data); return root; } // Function for inorder traversal in a BST. function inorder(root) { if (root != null) { inorder(root.left); document.write(root.data + " "); inorder(root.right); } } // Delete leaf nodes from binary search tree. function leafDelete(root) { if (root == null) { return null; } if (root.left == null && root.right == null) { return null; } // Else recursively delete in left and right // subtrees. root.left = leafDelete(root.left); root.right = leafDelete(root.right); return root; } // Driver code var root = null; root = insert(root, 20); insert(root, 10); insert(root, 5); insert(root, 15); insert(root, 30); insert(root, 25); insert(root, 35); document.write( "Inorder before Deleting the leaf Node. <br/>" ); inorder(root); document.write("<br/>"); leafDelete(root); document.write( "INorder after Deleting the leaf Node. <br/>" ); inorder(root); // This code is contributed by todaysgaurav </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