Advertisement
Top View of Binary Tree
JavaView on GFG
Top View of Binary Tree.java
Java
import java.util.*;
class Node {
int data;
Node left, right;
Node(int val) {
this.data = val;
this.left = null;
this.right = null;
}
}
class Solution {
public ArrayList<Integer> topView(Node root) {
ArrayList<Integer> ans = new ArrayList<>();
if (root == null)
return ans;
Map<Integer, Integer> map = new TreeMap<>();
Queue<Pair> q = new LinkedList<>();
q.add(new Pair(root, 0));
while (!q.isEmpty()) {
Pair p = q.poll();
Node node = p.node;
int hd = p.hd;
if (!map.containsKey(hd))
map.put(hd, node.data);
if (node.left != null)
q.add(new Pair(node.left, hd - 1));
if (node.right != null)
q.add(new Pair(node.right, hd + 1));
}
for (int val : map.values())
ans.add(val);
return ans;
}
}
class Pair {
Node node;
int hd;
Pair(Node n, int h) {
node = n;
hd = h;
}
}Advertisement
Was this solution helpful?