完全二叉树中编号最大的那个结点,它的编号刚好等于结点数。
比如上图中,编号最大的那个结点为4,同时二叉树中结点个数也为4,则该树是完全二叉树。
而上图中编号最大的结点为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);
}
}