package LeetCode.FiveHundredOneToOneThousand;
import LeetCode.TreeNode;
import java.util.ArrayList;
import java.util.List;
public class NineHundredAndFiftyEight {
public boolean isCompleteTree(TreeNode root) {
// 将所有的code进行统计,我们可以得出,如果是完全二叉树
// 最后一个节点的code值应该和当前深度的叶子个数相同
List<nNode> list = new ArrayList<>();
// 我们将定义根节点的code为1,可以得出左子树的code=2*code,右节点的code = 2 * code + 1
list.add(new nNode(1, root));
int len = 0;
// 当len = list.size()的时候说明已经遍历完了
while (len < list.size()){
nNode temp = list.get(len ++);
if (temp.node != null){
list.add(new nNode(temp.code * 2, temp.node.left));
list.add(new nNode(temp.code * 2 + 1, temp.node.right));
}
}
return list.get(len - 1).code == list.size();
}
private class nNode{
int code;
TreeNode node;
nNode(int code, TreeNode node){
this.code = code;
this.node = node;
}
}
}
958. 二叉树的完全性检验(逐句解释代码)
最新推荐文章于 2022-04-24 19:39:55 发布