完全二叉树中编号最大的那个结点,它的编号刚好等于结点数。 alt
比如上图中,编号最大的那个结点为4,同时二叉树中结点个数也为4,则该树完全二叉树。

alt
而上图中编号最大的结点为7,而二叉树中结点个数为6,则该树不是完全二叉树

public class Solution {
    int count = 0; // 记录二叉树中结点个数
    int maxIndex = -1; // 记录最大编号
    public boolean isCompleteTree (TreeNode root) {
        preorder(root, 1);
        return maxIndex == count;
    }
    
    // 这里采用任何一种遍历都行
    private void preorder(TreeNode root, int index){
        if(root == null){
            return;
        }
        count++;
        maxIndex = Math.max(maxIndex, index);
        preorder(root.left, index * 2);
        preorder(root.right, index * 2 + 1);
    }
}