二叉树最大宽度——BFS

题目链接

代码:

public int widthOfBinaryTree(TreeNode root) {
    
    
        if (root == null) return 0;
        Queue<TreeNode> queue = new LinkedList<>();
        LinkedList<Integer> list = new LinkedList<>();
        queue.offer(root);
        list.add(1);
        int size = 0;
        int max = 1;
        while (!queue.isEmpty()) {
    
    
            size = queue.size();
            for (int i = 0; i < size; i++) {
    
    
                TreeNode poll = queue.poll();
                int index = list.removeFirst();
                if (poll.left != null) {
    
    
                    queue.offer(poll.left);
                    list.add(index * 2);
                }
                if (poll.right != null) {
    
    
                    queue.offer(poll.right);
                    list.add(index * 2 + 1);
                }
            }
            if (list.size() >= 2) {
    
    
                max = Math.max(max, list.getLast() - list.getFirst() + 1);
            }
        }
        return max;
    }

猜你喜欢

转载自blog.csdn.net/qq_43665244/article/details/114262058
今日推荐