二叉树的完全性检验
问题简述
给定一个二叉树的 root ,确定它是否是一个 完全二叉树 。
思路1:利用完全二叉树定义
判断完全二叉树的条件:
左右子树都是满二叉树,且高度相同(满二叉树);
左右子树都是满二叉树,且左子树的高度+1;
左子树是满二叉树,右子树是完全二叉树,且高度相同;
左子树是完全二叉树,右子树是满二叉树,且左子树的高度+1;
综上:
我们需要存储信息有:高度、是否满二叉树、是否完全二叉树;
对空节点,初始化为:0、是、是;
思路2:利用完全二叉树的节点数性质
给每个节点标号,如果是完全二叉树,存在以下性质:
记根节点
id
为1
;若父节点的
id
为i
,则其左右子节点分别为2*i
和2*i + 1
;如果是完全二叉树则有最大的
id == n
,其中n
为总节点数;
Last updated