Skip to content

Commit

Permalink
Update 0662-maximum-width-of-binary-tree.java
Browse files Browse the repository at this point in the history
  • Loading branch information
sujal-goswami authored Jan 19, 2024
1 parent 4454fa5 commit df1a58a
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions java/0662-maximum-width-of-binary-tree.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,36 @@
class Solution {

public int widthOfBinaryTree(TreeNode root) {
Queue<Pair<TreeNode, Integer>> q = new LinkedList<>();
int maxWidth = 0;
q.offer(new Pair(root, 1));
while (!q.isEmpty()) {
int l = q.peek().getValue();
int r = l;
int size = q.size();
for (int i = 0; i < size; i++) {
TreeNode cur = q.peek().getKey();
r = q.poll().getValue();
if (cur.left != null) q.offer(new Pair(cur.left, 2 * r));
if (cur.right != null) q.offer(new Pair(cur.right, 2 * r + 1));
int res = 0;
Queue<tuple> q = new LinkedList<>();
q.add(new tuple(root, 1, 0));
int prevLevel = 0, prevNum = 1;

while(!q.isEmpty()){
tuple curr = q.poll();
TreeNode node = curr.node;
int num = curr.num, level = curr.level;

if(level > prevLevel){
prevLevel = level;
prevNum = num;
}
maxWidth = Math.max(maxWidth, r - l + 1);
res = Math.max(res, num - prevNum + 1);
if(node.left != null)
q.add(new tuple(node.left, num*2, level + 1));
if(node.right != null)
q.add(new tuple(node.right, num*2 + 1, level + 1));
}
return maxWidth;
return res;
}
}
class tuple{
TreeNode node;
int num;
int level;

public tuple(TreeNode node, int num, int level){
this.node = node;
this.num = num;
this.level = level;
}
}

0 comments on commit df1a58a

Please sign in to comment.