- 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