Related Articles
Get maximum left node in binary tree
• Difficulty Level : Easy
• Last Updated : 18 Feb, 2019

Given a tree, the task is to find the maximum in an only left node of the binary tree.

Examples:

```Input :
7
/    \
6       5
/ \     / \
4  3     2  1
Output :
6

Input :
1
/    \
2       3
/       / \
4       5   6
\    /  \
7  8   9
Output :
8
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Traverse with inorder traversal and Apply the condition for the left node only and get maximum of left node.
Let’s try to understand with code.

## C++

 `// CPP program to print maximum element``// in left node.``#include ``using` `namespace` `std;`` ` `// A Binary Tree Node``struct` `Node {``    ``int` `data;``    ``struct` `Node *left, *right;``};`` ` `// Get max of left element using``// Inorder traversal``int` `maxOfLeftElement(Node* root)``{``    ``int` `res = INT_MIN;``    ``if` `(root == NULL)``        ``return` `res;`` ` `    ``if` `(root->left != NULL)``        ``res = root->left->data;`` ` `    ``// Return maximum of three values``    ``// 1) Recursive max in left subtree``    ``// 2) Value in left node``    ``// 3) Recursive max in right subtree``    ``return` `max({ maxOfLeftElement(root->left),``                 ``res,``                 ``maxOfLeftElement(root->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;``}`` ` `// Driver program to test above functions``int` `main()``{``    ``// Let us create binary tree shown in above diagram``    ``Node* root = newNode(7);``    ``root->left = newNode(6);``    ``root->right = newNode(5);``    ``root->left->left = newNode(4);``    ``root->left->right = newNode(3);``    ``root->right->left = newNode(2);``    ``root->right->right = newNode(1);`` ` `    ``/*     7``         ``/    \``        ``6       5``       ``/ \     / \``      ``4  3     2  1          */``    ``cout << maxOfLeftElement(root);``    ``return` `0;``}`

## Java

 `// Java program to print maximum element ``// in left node. ``import` `java.util.*;``class` `GfG {`` ` `// A Binary Tree Node ``static` `class` `Node { ``    ``int` `data; ``    ``Node left, right; ``}`` ` `// Get max of left element using ``// Inorder traversal ``static` `int` `maxOfLeftElement(Node root) ``{ ``    ``int` `res = Integer.MIN_VALUE; ``    ``if` `(root == ``null``) ``        ``return` `res; `` ` `    ``if` `(root.left != ``null``) ``        ``res = root.left.data; `` ` `    ``// Return maximum of three values ``    ``// 1) Recursive max in left subtree ``    ``// 2) Value in left node ``    ``// 3) Recursive max in right subtree ``    ``return` `Math.max(maxOfLeftElement(root.left),``       ``Math.max(res, maxOfLeftElement(root.right))); ``} `` ` `// Utility function to create a new tree node ``static` `Node newNode(``int` `data) ``{ ``    ``Node temp = ``new` `Node(); ``    ``temp.data = data; ``    ``temp.left = ``null``;``    ``temp.right = ``null``; ``    ``return` `temp; ``} `` ` `// Driver program to test above functions ``public` `static` `void` `main(String[] args) ``{ ``    ``// Let us create binary tree shown in above diagram ``    ``Node root = newNode(``7``); ``    ``root.left = newNode(``6``); ``    ``root.right = newNode(``5``); ``    ``root.left.left = newNode(``4``); ``    ``root.left.right = newNode(``3``); ``    ``root.right.left = newNode(``2``); ``    ``root.right.right = newNode(``1``); `` ` `    ``/* 7 ``        ``/ \ ``        ``6 5 ``    ``/ \ / \ ``    ``4 3 2 1         */``    ``System.out.println(maxOfLeftElement(root)); ``}``} `

## Python3

 `# Python program to prmaximum element ``# in left node. `` ` `# Utility class to create a ``# new tree node ``class` `newNode:``    ``def` `__init__(``self``, data): ``        ``self``.data ``=` `data ``        ``self``.left ``=` `self``.right ``=` `None``     ` `# Get max of left element using ``# Inorder traversal ``def` `maxOfLeftElement(root):``    ``res ``=` `-``999999999999``    ``if` `(root ``=``=` `None``):``        ``return` `res `` ` `    ``if` `(root.left !``=` `None``): ``        ``res ``=` `root.left.data `` ` `    ``# Return maximum of three values ``    ``# 1) Recursive max in left subtree ``    ``# 2) Value in left node ``    ``# 3) Recursive max in right subtree ``    ``return` `max``({ maxOfLeftElement(root.left), res,``                 ``maxOfLeftElement(root.right) })`` ` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:`` ` `    ``# Let us create binary tree shown``    ``# in above diagram ``    ``root ``=` `newNode(``7``) ``    ``root.left ``=` `newNode(``6``) ``    ``root.right ``=` `newNode(``5``) ``    ``root.left.left ``=` `newNode(``4``) ``    ``root.left.right ``=` `newNode(``3``) ``    ``root.right.left ``=` `newNode(``2``) ``    ``root.right.right ``=` `newNode(``1``) `` ` `    ``#     7 ``    ``#     / \ ``    ``# 6     5 ``    ``# / \     / \ ``    ``# 4 3     2 1         ``    ``print``(maxOfLeftElement(root))`` ` `# This code is contributed by PranchalK`

## C#

 `// C# program to print maximum element ``// in left node.``using` `System;`` ` `class` `GfG ``{`` ` `    ``// A Binary Tree Node ``    ``class` `Node ``    ``{ ``        ``public` `int` `data; ``        ``public` `Node left, right; ``    ``}`` ` `    ``// Get max of left element using ``    ``// Inorder traversal ``    ``static` `int` `maxOfLeftElement(Node root) ``    ``{ ``        ``int` `res = ``int``.MinValue; ``        ``if` `(root == ``null``) ``            ``return` `res; `` ` `        ``if` `(root.left != ``null``) ``            ``res = root.left.data; `` ` `        ``// Return maximum of three values ``        ``// 1) Recursive max in left subtree ``        ``// 2) Value in left node ``        ``// 3) Recursive max in right subtree ``        ``return` `Math.Max(maxOfLeftElement(root.left),``        ``Math.Max(res, maxOfLeftElement(root.right))); ``    ``} `` ` `    ``// Utility function to create a new tree node ``    ``static` `Node newNode(``int` `data) ``    ``{ ``        ``Node temp = ``new` `Node(); ``        ``temp.data = data; ``        ``temp.left = ``null``;``        ``temp.right = ``null``; ``        ``return` `temp; ``    ``} `` ` `    ``// Driver code ``    ``public` `static` `void` `Main(String[] args) ``    ``{ ``        ``// Let us create binary tree``        ``// shown in above diagram ``        ``Node root = newNode(7); ``        ``root.left = newNode(6); ``        ``root.right = newNode(5); ``        ``root.left.left = newNode(4); ``        ``root.left.right = newNode(3); ``        ``root.right.left = newNode(2); ``        ``root.right.right = newNode(1); `` ` `        ``/* 7 ``            ``/ \ ``            ``6 5 ``        ``/ \ / \ ``        ``4 3 2 1         */``        ``Console.WriteLine(maxOfLeftElement(root)); ``    ``}``}`` ` `// This code is contributed by 29AjayKumar`
Output:
```6
```

My Personal Notes arrow_drop_up