Skip to main content

Print the nodes of binary tree having a grandchild

Here given code implementation process.

// C program for
// Print the nodes of binary tree having a grandchild
#include <stdio.h>
#include <stdlib.h>
// Tree Node
struct TreeNode
{
    int data;
    struct TreeNode *left;
    struct TreeNode *right;
};
// Binary Tree
struct BinaryTree
{
    struct TreeNode *root;
};
// Create new tree
struct BinaryTree *newTree()
{
    // Create a dynamic tree 
    struct BinaryTree *tree = (struct BinaryTree *) malloc(sizeof(struct BinaryTree));
    if (tree != NULL)
    {
        tree->root = NULL;
    }
    else
    {
        printf("Memory Overflow to Create tree Tree\n");
    }
    //return new tree
    return tree;
}
// This is creates and returns the new binary tree node
struct TreeNode *getNode(int data)
{
    // Create dynamic node
    struct TreeNode *node = (struct TreeNode *) malloc(sizeof(struct TreeNode));
    if (node != NULL)
    {
        //Set data and pointer values
        node->data = data;
        node->left = NULL;
        node->right = NULL;
    }
    else
    {
        //This is indicates, segmentation fault or memory overflow problem
        printf("Memory Overflow\n");
    }
    //return new node
    return node;
}
//  Display node which having grandchild
void printNode(struct TreeNode *node)
{
    if (node != NULL)
    {
        
        if((node->left != NULL && 
                        (node->left->left != NULL || node->left->right!=NULL))
            ||
            (node->right != NULL && 
                        (node->right->right != NULL || node->right->left != NULL)))
        {
            // Print grandchild node
            printf(" %d",node->data);
        }
        // Visit left subtree
        printNode(node->left);
        // Visit right subtree
        printNode(node->right);
        
  
    }
}

int main(int argc, char const *argv[])
{
    struct BinaryTree *tree = newTree();
    /*
            34                            
           /   \    
         -4     10    
         / \      \               
        7   12     6
       /   / \     
      4   6   8   
         / \      
        9   1       
    -----------------
      Constructing binary tree
    */
    tree->root = getNode(34);
    tree->root->left = getNode(-4);
    tree->root->left->right = getNode(12);
    tree->root->left->right->left = getNode(6);
    tree->root->left->right->left->left = getNode(9);
    tree->root->left->right->left->right = getNode(1);
    tree->root->left->right->right = getNode(8);
    tree->root->left->left = getNode(7);
    tree->root->left->left->left = getNode(4);
    tree->root->right = getNode(10);
    tree->root->right->right = getNode(6);
 
    printNode(tree->root);
    return 0;
}

input

 34 -4 12
/*
    Java Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
class TreeNode
{
	public int data;
	public TreeNode left;
	public TreeNode right;
	public TreeNode(int data)
	{
		// Set node value
		this.data = data;
		this.left = null;
		this.right = null;
	}
}
public class BinaryTree
{
	public TreeNode root;
	public BinaryTree()
	{
		// Set initial tree root to null
		this.root = null;
	}
	//  Display node which having grandchild
	public void printNode(TreeNode node)
	{
		if (node != null)
		{
			if ((node.left != null 
                 && (node.left.left != null || node.left.right != null)) 
                || 
                (node.right != null
                 && (node.right.right != null || node.right.left != null)))
			{
				// Print grandchild node
				System.out.print(" " + node.data );
			}
			// Visit left subtree
			printNode(node.left);
			// Visit right subtree
			printNode(node.right);
		}
	}
	public static void main(String[] args)
	{
		// Create new binary trees 
		BinaryTree tree = new BinaryTree();
		/*
		        34                            
		       /   \    
		     -4     10    
		     / \      \               
		    7   12     6
		   /   / \     
		  4   6   8   
		     / \      
		    9   1       
		-----------------
		  Constructing binary tree
		*/
		tree.root = new TreeNode(34);
		tree.root.left = new TreeNode(-4);
		tree.root.left.right = new TreeNode(12);
		tree.root.left.right.left = new TreeNode(6);
		tree.root.left.right.left.left = new TreeNode(9);
		tree.root.left.right.left.right = new TreeNode(1);
		tree.root.left.right.right = new TreeNode(8);
		tree.root.left.left = new TreeNode(7);
		tree.root.left.left.left = new TreeNode(4);
		tree.root.right = new TreeNode(10);
		tree.root.right.right = new TreeNode(6);
		tree.printNode(tree.root);
	}
}

input

 34 -4 12
// Include header file
#include <iostream>
using namespace std;

/*
    C++ Program
    Find parent of leaf nodes in binary tree
*/

// Binary Tree node
class TreeNode
{
	public: 
    int data;
	TreeNode *left;
	TreeNode *right;
	TreeNode(int data)
	{
		// Set node value
		this->data = data;
		this->left = NULL;
		this->right = NULL;
	}
};
class BinaryTree
{
	public: TreeNode *root;
	BinaryTree()
	{
		this->root = NULL;
	}
	//  Display node which having grandchild
	void printNode(TreeNode *node)
	{
		if (node != NULL)
		{
			if ((node->left != NULL 
                 && 
                 (node->left->left != NULL || node->left->right != NULL)) 
                || 
                (node->right != NULL 
                 && (node->right->right != NULL || node->right->left != NULL)))
			{
				// Print grandchild node
				cout << " " << node->data;
			}
			// Visit left subtree
			this->printNode(node->left);
			// Visit right subtree
			this->printNode(node->right);
		}
	}
};
int main()
{
	// Create new binary trees
	BinaryTree *tree = new BinaryTree();
	/*
	        34                            
	       /   \    
	     -4     10    
	     / \      \               
	    7   12     6
	   /   / \     
	  4   6   8   
	     / \      
	    9   1       
	-----------------
	  Constructing binary tree
	*/
	tree->root = new TreeNode(34);
	tree->root->left = new TreeNode(-4);
	tree->root->left->right = new TreeNode(12);
	tree->root->left->right->left = new TreeNode(6);
	tree->root->left->right->left->left = new TreeNode(9);
	tree->root->left->right->left->right = new TreeNode(1);
	tree->root->left->right->right = new TreeNode(8);
	tree->root->left->left = new TreeNode(7);
	tree->root->left->left->left = new TreeNode(4);
	tree->root->right = new TreeNode(10);
	tree->root->right->right = new TreeNode(6);
	tree->printNode(tree->root);
	return 0;
}

input

 34 -4 12
// Include namespace system
using System;
/*
    Csharp Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
public class TreeNode
{
	public int data;
	public TreeNode left;
	public TreeNode right;
	public TreeNode(int data)
	{
		// Set node value
		this.data = data;
		this.left = null;
		this.right = null;
	}
}
public class BinaryTree
{
	public TreeNode root;
	public BinaryTree()
	{
		// Set initial tree root to null
		this.root = null;
	}
	//  Display node which having grandchild
	public void printNode(TreeNode node)
	{
		if (node != null)
		{
			if ((node.left != null 
                 && (node.left.left != null || node.left.right != null)) 
                || 
                (node.right != null 
                 && (node.right.right != null || node.right.left != null)))
			{
				// Print grandchild node
				Console.Write(" " + node.data);
			}
			// Visit left subtree
			this.printNode(node.left);
			// Visit right subtree
			this.printNode(node.right);
		}
	}
	public static void Main(String[] args)
	{
		// Create new binary trees
		BinaryTree tree = new BinaryTree();
		/*
		        34                            
		       /   \    
		     -4     10    
		     / \      \               
		    7   12     6
		   /   / \     
		  4   6   8   
		     / \      
		    9   1       
		-----------------
		  Constructing binary tree
		*/
		tree.root = new TreeNode(34);
		tree.root.left = new TreeNode(-4);
		tree.root.left.right = new TreeNode(12);
		tree.root.left.right.left = new TreeNode(6);
		tree.root.left.right.left.left = new TreeNode(9);
		tree.root.left.right.left.right = new TreeNode(1);
		tree.root.left.right.right = new TreeNode(8);
		tree.root.left.left = new TreeNode(7);
		tree.root.left.left.left = new TreeNode(4);
		tree.root.right = new TreeNode(10);
		tree.root.right.right = new TreeNode(6);
		tree.printNode(tree.root);
	}
}

input

 34 -4 12
<?php
/*
    Php Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
class TreeNode
{
	public $data;
	public $left;
	public $right;
	public	function __construct($data)
	{
		// Set node value
		$this->data = $data;
		$this->left = NULL;
		$this->right = NULL;
	}
}
class BinaryTree
{
	public $root;
	public	function __construct()
	{
		$this->root = NULL;
	}
	//  Display node which having grandchild
	public	function printNode($node)
	{
		if ($node != NULL)
		{
			if (($node->left != NULL 
                 && ($node->left->left != NULL || $node->left->right != NULL)) 
                || 
                ($node->right != NULL 
                 && ($node->right->right != NULL || $node->right->left != NULL)))
			{
				// Print grandchild node
				echo(" ".$node->data);
			}
			// Visit left subtree
			$this->printNode($node->left);
			// Visit right subtree
			$this->printNode($node->right);
		}
	}
}

function main()
{
	// Create new binary trees
	$tree = new BinaryTree();
	/*
	        34                            
	       /   \    
	     -4     10    
	     / \      \               
	    7   12     6
	   /   / \     
	  4   6   8   
	     / \      
	    9   1       
	-----------------
	  Constructing binary tree
	*/
	$tree->root = new TreeNode(34);
	$tree->root->left = new TreeNode(-4);
	$tree->root->left->right = new TreeNode(12);
	$tree->root->left->right->left = new TreeNode(6);
	$tree->root->left->right->left->left = new TreeNode(9);
	$tree->root->left->right->left->right = new TreeNode(1);
	$tree->root->left->right->right = new TreeNode(8);
	$tree->root->left->left = new TreeNode(7);
	$tree->root->left->left->left = new TreeNode(4);
	$tree->root->right = new TreeNode(10);
	$tree->root->right->right = new TreeNode(6);
	$tree->printNode($tree->root);
}
main();

input

 34 -4 12
/*
    Node JS Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
class TreeNode
{
	constructor(data)
	{
		// Set node value
		this.data = data;
		this.left = null;
		this.right = null;
	}
}
class BinaryTree
{
	constructor()
	{
		this.root = null;
	}
	//  Display node which having grandchild
	printNode(node)
	{
		if (node != null)
		{
			if ((node.left != null 
                 && (node.left.left != null || node.left.right != null)) 
                || (node.right != null 
                    && (node.right.right != null || node.right.left != null)))
			{
				// Print grandchild node
				process.stdout.write(" " + node.data);
			}
			// Visit left subtree
			this.printNode(node.left);
			// Visit right subtree
			this.printNode(node.right);
		}
	}
}

function main()
{
	// Create new binary trees
	var tree = new BinaryTree();
	/*
	        34                            
	       /   \    
	     -4     10    
	     / \      \               
	    7   12     6
	   /   / \     
	  4   6   8   
	     / \      
	    9   1       
	-----------------
	  Constructing binary tree
	*/
	tree.root = new TreeNode(34);
	tree.root.left = new TreeNode(-4);
	tree.root.left.right = new TreeNode(12);
	tree.root.left.right.left = new TreeNode(6);
	tree.root.left.right.left.left = new TreeNode(9);
	tree.root.left.right.left.right = new TreeNode(1);
	tree.root.left.right.right = new TreeNode(8);
	tree.root.left.left = new TreeNode(7);
	tree.root.left.left.left = new TreeNode(4);
	tree.root.right = new TreeNode(10);
	tree.root.right.right = new TreeNode(6);
	tree.printNode(tree.root);
}
main();

input

 34 -4 12
#    Python 3 Program
#    Find parent of leaf nodes in binary tree

#  Binary Tree node
class TreeNode :
	def __init__(self, data) :
		#  Set node value
		self.data = data
		self.left = None
		self.right = None
	

class BinaryTree :
	def __init__(self) :
		self.root = None
	
	#   Display node which having grandchild
	def printNode(self, node) :
		if (node != None) :
			if ((node.left != None and
                 (node.left.left != None or node.left.right != None)) or
            (node.right != None and
             (node.right.right != None or node.right.left != None))) :
				#  Print grandchild node
				print(" ", node.data, end = "")
			
			#  Visit left subtree
			self.printNode(node.left)
			#  Visit right subtree
			self.printNode(node.right)
		
	

def main() :
	#  Create new binary trees
	tree = BinaryTree()
	#        34                            
	#       /   \    
	#     -4     10    
	#     / \      \               
	#    7   12     6
	#   /   / \     
	#  4   6   8   
	#     / \      
	#    9   1       
	# -----------------
	#  Constructing binary tree
	tree.root = TreeNode(34)
	tree.root.left = TreeNode(-4)
	tree.root.left.right = TreeNode(12)
	tree.root.left.right.left = TreeNode(6)
	tree.root.left.right.left.left = TreeNode(9)
	tree.root.left.right.left.right = TreeNode(1)
	tree.root.left.right.right = TreeNode(8)
	tree.root.left.left = TreeNode(7)
	tree.root.left.left.left = TreeNode(4)
	tree.root.right = TreeNode(10)
	tree.root.right.right = TreeNode(6)
	tree.printNode(tree.root)

if __name__ == "__main__": main()

input

  34  -4  12
#    Ruby Program
#    Find parent of leaf nodes in binary tree

#  Binary Tree node
class TreeNode 
	# Define the accessor and reader of class TreeNode
	attr_reader :data, :left, :right
	attr_accessor :data, :left, :right
	def initialize(data) 
		#  Set node value
		self.data = data
		self.left = nil
		self.right = nil
	end

end

class BinaryTree 
	# Define the accessor and reader of class BinaryTree
	attr_reader :root
	attr_accessor :root
	def initialize() 
		self.root = nil
	end

	#   Display node which having grandchild
	def printNode(node) 
		if (node != nil) 
			if ((node.left != nil && 
                 (node.left.left != nil || node.left.right != nil)) || 
                (node.right != nil && 
                 (node.right.right != nil || node.right.left != nil))) 
				#  Print grandchild node
				print(" ", node.data)
			end

			#  Visit left subtree
			self.printNode(node.left)
			#  Visit right subtree
			self.printNode(node.right)
		end

	end

end

def main() 
	#  Create new binary trees
	tree = BinaryTree.new()
	#        34                            
	#       /   \    
	#     -4     10    
	#     / \      \               
	#    7   12     6
	#   /   / \     
	#  4   6   8   
	#     / \      
	#    9   1       
	# -----------------
	#  Constructing binary tree
	tree.root = TreeNode.new(34)
	tree.root.left = TreeNode.new(-4)
	tree.root.left.right = TreeNode.new(12)
	tree.root.left.right.left = TreeNode.new(6)
	tree.root.left.right.left.left = TreeNode.new(9)
	tree.root.left.right.left.right = TreeNode.new(1)
	tree.root.left.right.right = TreeNode.new(8)
	tree.root.left.left = TreeNode.new(7)
	tree.root.left.left.left = TreeNode.new(4)
	tree.root.right = TreeNode.new(10)
	tree.root.right.right = TreeNode.new(6)
	tree.printNode(tree.root)
end

main()

input

 34 -4 12
/*
    Scala Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
class TreeNode(var data: Int,
	var left: TreeNode,
		var right: TreeNode)
{
	def this(data: Int)
	{
		// Set node value
		this(data,null,null);
	}
}
class BinaryTree(var root: TreeNode)
{
	def this()
	{
		this(null);
	}
	//  Display node which having grandchild
	def printNode(node: TreeNode): Unit = {
		if (node != null)
		{
			if ((node.left != null 
                 && (node.left.left != null || node.left.right != null)) 
                || (node.right != null 
                    && (node.right.right != null || node.right.left != null)))
			{
				// Print grandchild node
				print(" " + node.data);
			}
			// Visit left subtree
			printNode(node.left);
			// Visit right subtree
			printNode(node.right);
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		// Create new binary trees
		var tree: BinaryTree = new BinaryTree();
		/*
		        34                            
		       /   \    
		     -4     10    
		     / \      \               
		    7   12     6
		   /   / \     
		  4   6   8   
		     / \      
		    9   1       
		-----------------
		  Constructing binary tree
		*/
		tree.root = new TreeNode(34);
		tree.root.left = new TreeNode(-4);
		tree.root.left.right = new TreeNode(12);
		tree.root.left.right.left = new TreeNode(6);
		tree.root.left.right.left.left = new TreeNode(9);
		tree.root.left.right.left.right = new TreeNode(1);
		tree.root.left.right.right = new TreeNode(8);
		tree.root.left.left = new TreeNode(7);
		tree.root.left.left.left = new TreeNode(4);
		tree.root.right = new TreeNode(10);
		tree.root.right.right = new TreeNode(6);
		tree.printNode(tree.root);
	}
}

input

 34 -4 12
/*
    Swift 4 Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
class TreeNode
{
	var data: Int;
	var left: TreeNode? ;
	var right: TreeNode? ;
	init(_ data: Int)
	{
		// Set node value
		self.data = data;
		self.left = nil;
		self.right = nil;
	}
}
class BinaryTree
{
	var root: TreeNode? ;
	init()
	{
		self.root = nil;
	}
	//  Display node which having grandchild
	func printNode(_ node: TreeNode? )
	{
		if (node  != nil)
		{
			if ((node!.left  != nil 
                 && (node!.left!.left  != nil || node!.left!.right  != nil)) 
              || (node!.right  != nil 
                  && (node!.right!.right  != nil || node!.right!.left  != nil)))
			{
				// Print grandchild node
				print(" ", node!.data, terminator: "");
			}
			// Visit left subtree
			self.printNode(node!.left);
			// Visit right subtree
			self.printNode(node!.right);
		}
	}
}
func main()
{
	// Create new binary trees
	let tree = BinaryTree();
	/*
	        34                            
	       /   \    
	     -4     10    
	     / \      \               
	    7   12     6
	   /   / \     
	  4   6   8   
	     / \      
	    9   1       
	-----------------
	  Constructing binary tree
	*/
	tree.root = TreeNode(34);
	tree.root!.left = TreeNode(-4);
	tree.root!.left!.right = TreeNode(12);
	tree.root!.left!.right!.left = TreeNode(6);
	tree.root!.left!.right!.left!.left = TreeNode(9);
	tree.root!.left!.right!.left!.right = TreeNode(1);
	tree.root!.left!.right!.right = TreeNode(8);
	tree.root!.left!.left = TreeNode(7);
	tree.root!.left!.left!.left = TreeNode(4);
	tree.root!.right = TreeNode(10);
	tree.root!.right!.right = TreeNode(6);
	tree.printNode(tree.root);
}
main();

input

  34  -4  12
/*
    Kotlin Program
    Find parent of leaf nodes in binary tree
*/
// Binary Tree node
class TreeNode
{
	var data: Int;
	var left: TreeNode ? ;
	var right: TreeNode ? ;
	constructor(data: Int)
	{
		// Set node value
		this.data = data;
		this.left = null;
		this.right = null;
	}
}
class BinaryTree
{
	var root: TreeNode ? ;
	constructor()
	{
		this.root = null;
	}
	//  Display node which having grandchild
	fun printNode(node: TreeNode ? ): Unit
	{
		if (node != null)
		{
			if ((node.left != null 
                 && (node.left?.left != null || node.left?.right != null)) 
                 || (node.right != null 
                     && (node.right?.right != null || node.right?.left != null)))
			{
				// Print grandchild node
				print(" " + node.data);
			}
			// Visit left subtree
			this.printNode(node.left);
			// Visit right subtree
			this.printNode(node.right);
		}
	}
}
fun main(args: Array < String > ): Unit
{
	// Create new binary trees
	val tree: BinaryTree = BinaryTree();
	/*
	        34                            
	       /   \    
	     -4     10    
	     / \      \               
	    7   12     6
	   /   / \     
	  4   6   8   
	     / \      
	    9   1       
	-----------------
	  Constructing binary tree
	*/
	tree.root = TreeNode(34);
	tree.root?.left = TreeNode(-4);
	tree.root?.left?.right = TreeNode(12);
	tree.root?.left?.right?.left = TreeNode(6);
	tree.root?.left?.right?.left?.left = TreeNode(9);
	tree.root?.left?.right?.left?.right = TreeNode(1);
	tree.root?.left?.right?.right = TreeNode(8);
	tree.root?.left?.left = TreeNode(7);
	tree.root?.left?.left?.left = TreeNode(4);
	tree.root?.right = TreeNode(10);
	tree.root?.right?.right = TreeNode(6);
	tree.printNode(tree.root);
}

input

 34 -4 12




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment