- Given a binary tree, find out the maximum or largest element using non recursive algorithm.
- Traverse the binary tree using depth first search (DFS) or level order traversal.

Example: Maximum element in a binary tree using java
- Create max variable to denote largest element in a binary tree.
- Visit the Level 0 and maximum value will be set to 50[Refer Fig 1]
- Go to Level 1 & visit all nodes
- Visit Node 25, which is less than current max value 50
- max value will not be updated
- Visit Next node 30, which is less the current max 50
- max value will not be updated
- Visit Node 25, which is less than current max value 50
- Go to Level 2 & visit all nodes
- Node D, Node E & Node F are less than current max value.
- max value will not be updated
- When we visited Node G.
- max value is greater than current max, so max will be updated to 60.
- Node D, Node E & Node F are less than current max value.
- Maximum or largest element in a binary tree is 60.
- Visited all nodes [Refer Fig 2]

Time complexity of algorithm is O(n).
Program: Maximum or largest element – binary tree
1.) MaxElement Class:
- MaxElement class is responsible for finding the maximum or largest element in a binary tree.
- Traverse the binary tree using level order traversal or breadth first search (non recursive) algorithm.
package org.learn.Question;
import java.util.LinkedList;
import java.util.Queue;
public class MaxElement {
public static int maxElement(Node root) {
if (root == null) {
System.out.println("Tree is empty");
return Integer.MIN_VALUE;
}
int max = root.data;
Queue<Node> queue = new LinkedList<Node>();
queue.offer(root);
while (!queue.isEmpty()) {
Node node = queue.poll();
if(max < node.data) {
max = node.data;
}
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
System.out.println("Max Element in Binary Tree is : " + max);
return max;
}
}
2.) Node Class:
- Node class is representing the node(s) of a binary tree.
package org.learn.Question;
public class Node {
public int data;
public Node left;
public Node right;
public Node(int num) {
this.data = num;
this.left = null;
this.right = null;
}
public Node() {
this.left = null;
this.right = null;
}
public static Node createNode(int number) {
return new Node(number);
}
}
3.) App Class:
- We are creating a binary tree in main method.
- We are calling method of maxElement class to find maximum element in a binary tree
package org.learn.Client;
import org.learn.Question.MaxElement;
import org.learn.Question.Node;
public class App {
public static void main(String[] args) {
// root level 0
Node A = Node.createNode(50);
// Level 1
Node B = Node.createNode(25);
Node C = Node.createNode(30);
// Level 2
Node D = Node.createNode(40);
Node E = Node.createNode(10);
Node F = Node.createNode(30);
Node G = Node.createNode(60);
// connect Level 0 and 1
A.left = B;
A.right = C;
// connect level 1 and level 2
B.left = D;
B.right = E;
C.left = F;
C.right = G;
// connect level 2 and level 3
MaxElement.maxElement(A);
}
}
Output : maximum or largest element in binary tree (Java/BFS)
Max Element in Binary Tree is : 60
