Cuente los Nodes que no son hojas en un árbol binario

Dado un árbol binario, cuente el número total de Nodes que no son hojas en el árbol
Ejemplos: 
 

Input :

C++

// CPP program to count total number of
// non-leaf nodes in a binary tree
#include <bits/stdc++.h>
using namespace std;
  
/* A binary tree node has data, pointer to 
  left child and a pointer to right child */
struct Node {
    int data;
    struct Node* left;
    struct Node* right;
};
  
/* Helper function that allocates a new node with the
given data and NULL left and right pointers. */
struct Node* newNode(int data)
{
    struct Node* node = new Node;
    node->data = data;
    node->left = node->right = NULL;
    return (node);
}
  
/* Computes the number of non-leaf nodes in a tree. */
int countNonleaf(struct Node* root)
{
    // Base cases.
    if (root == NULL || (root->left == NULL && 
                         root->right == NULL))
        return 0;
  
    // If root is Not NULL and its one of its
    // child is also not NULL
    return 1 + countNonleaf(root->left) + 
               countNonleaf(root->right);
}
  
/* Driver program to test size function*/
int main()
{
    struct Node* root = newNode(1);
    root->left = newNode(2);
    root->right = newNode(3);
    root->left->left = newNode(4);
    root->left->right = newNode(5);
    cout << countNonleaf(root);
    return 0;
}

Java

// Java program to count total number of 
// non-leaf nodes in a binary tree 
class GfG { 
  
/* A binary tree node has data, pointer to 
left child and a pointer to right child */
static class Node { 
    int data; 
    Node left; 
    Node right; 
}
  
/* Helper function that allocates a new node with the 
given data and NULL left and right pointers. */
static Node newNode(int data) 
{ 
    Node node = new Node(); 
    node.data = data; 
    node.left = null;
    node.right = null; 
    return (node); 
} 
  
/* Computes the number of non-leaf nodes in a tree. */
static int countNonleaf(Node root) 
{ 
    // Base cases. 
    if (root == null || (root.left == null && 
                        root.right == null)) 
        return 0; 
  
    // If root is Not NULL and its one of its 
    // child is also not NULL 
    return 1 + countNonleaf(root.left) + 
                countNonleaf(root.right); 
} 
  
/* Driver program to test size function*/
public static void main(String[] args) 
{ 
    Node root = newNode(1); 
    root.left = newNode(2); 
    root.right = newNode(3); 
    root.left.left = newNode(4); 
    root.left.right = newNode(5); 
    System.out.println(countNonleaf(root)); 
}
} 

Python3

# Python3 program to count total number 
# of non-leaf nodes in a binary tree
  
# class that allocates a new node with the 
#given data and None left and right pointers. 
class newNode:
    def __init__(self,data):
        self.data = data 
        self.left = self.right = None
  
# Computes the number of non-leaf 
# nodes in a tree. 
def countNonleaf(root):
      
    # Base cases. 
    if (root == None or (root.left == None and 
                         root.right == None)): 
        return 0
  
    # If root is Not None and its one of  
    # its child is also not None 
    return (1 + countNonleaf(root.left) + 
                countNonleaf(root.right))
  
# Driver Code
if __name__ == '__main__':
  
    root = newNode(1) 
    root.left = newNode(2) 
    root.right = newNode(3) 
    root.left.left = newNode(4) 
    root.left.right = newNode(5) 
    print(countNonleaf(root))
  
# This code is contributed by PranchalK

C#

// C# program to count total number of 
// non-leaf nodes in a binary tree
using System;
  
class GfG 
{ 
  
    /* A binary tree node has data, pointer to 
    left child and a pointer to right child */
    class Node { 
        public int data; 
        public Node left; 
        public Node right; 
    }
  
    /* Helper function that allocates a new node with the 
    given data and NULL left and right pointers. */
    static Node newNode(int data) 
    { 
        Node node = new Node(); 
        node.data = data; 
        node.left = null;
        node.right = null; 
        return (node); 
    } 
  
    /* Computes the number of non-leaf nodes in a tree. */
    static int countNonleaf(Node root) 
    { 
        // Base cases. 
        if (root == null || (root.left == null && 
                            root.right == null)) 
            return 0; 
  
        // If root is Not NULL and its one of its 
        // child is also not NULL 
        return 1 + countNonleaf(root.left) + 
                    countNonleaf(root.right); 
    } 
  
    /* Driver code*/
    public static void Main(String[] args) 
    { 
        Node root = newNode(1); 
        root.left = newNode(2); 
        root.right = newNode(3); 
        root.left.left = newNode(4); 
        root.left.right = newNode(5); 
        Console.WriteLine(countNonleaf(root)); 
    }
}
  
// This code is contributed by PrinciRaj1992

Javascript

<script>
    // Javascript program to count total number of 
    // non-leaf nodes in a binary tree 
      
    /* A binary tree node has data, pointer to 
    left child and a pointer to right child */
    class Node
    {
        constructor(data) {
           this.left = null;
           this.right = null;
           this.data = data;
        }
    }
      
    /* Helper function that allocates a new node with the 
    given data and NULL left and right pointers. */
    function newNode(data) 
    { 
        let node = new Node(data); 
        return (node); 
    } 
  
    /* Computes the number of non-leaf nodes in a tree. */
    function countNonleaf(root) 
    { 
        // Base cases. 
        if (root == null || (root.left == null && 
                            root.right == null)) 
            return 0; 
  
        // If root is Not NULL and its one of its 
        // child is also not NULL 
        return 1 + countNonleaf(root.left) + 
                    countNonleaf(root.right); 
    }
      
    let root = newNode(1); 
    root.left = newNode(2); 
    root.right = newNode(3); 
    root.left.left = newNode(4); 
    root.left.right = newNode(5); 
    document.write(countNonleaf(root)); 
   
 // This code is contributed by mukesh07.
</script>

Publicación traducida automáticamente

Artículo escrito por Shahnawaz_Ali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *