662. 二叉树最大宽度

662. 二叉树最大宽度_第1张图片

class Solution {
    public int widthOfBinaryTree(TreeNode root) {
        List> arr = new ArrayList<>();
        int res = 0;
        arr.add(new Pair(root,1));
        while (!arr.isEmpty()){
            List> tmp = new ArrayList<>();
            for (Pair pair : arr) {
                TreeNode node = pair.getKey();
                Integer index = pair.getValue();
                if(node.left != null){
                    tmp.add(new Pair<>(node.left,index * 2));
                }
                if(node.right != null){
                    tmp.add(new Pair<>(node.right,index * 2 + 1));
                }
            }
            res = Math.max(arr.get(arr.size() - 1).getValue() - arr.get(0).getValue() + 1,res);
            arr = tmp;
        }
        return res;
    }
}

 

你可能感兴趣的:(leetcode,leetcode,算法,java)