用到的核心知识点就是层序遍历,题目难度一般,通过设置两个临时变量即可解决
package com.Algorithm;
import java.util.LinkedList;
import java.util.Queue;
public class Code1_BTMaxWidthNum {
public static class Node{
int value;
Node left;
Node right;
public Node(int v) {
value = v;
}
}
public static int maxWidth(Node head) {
Queue<Node> queue = new LinkedList<Node>();
queue.add(head);
Node curEnd = null;//当前层的最后一个节点
Node nextEnd = null;//下面一层的最后一个节点
int maxNodes = 0;//记录最大节点数
int curLevelNodes = 0;//记录每一层的节点数
curEnd = head;
while(queue!=null) {
Node curNode = queue.poll();
if(curNode.left!=null) {
nextEnd = curNode.left;
queue.add(curNode.left);
}
if(curNode.right!=null) {
nextEnd = curNode.right;
queue.add(curNode.right);
}
curLevelNodes++;
if(curEnd == curNode) {
maxNodes = Math.max(maxNodes, curLevelNodes);
curLevelNodes=0;
curEnd = nextEnd;
}
}
return maxNodes;
}
}