本文共 547 字,大约阅读时间需要 1 分钟。
根据完全二叉树的性质,层序依次给定编号1~n;如果最大编号与n相等,则是完全二叉树。完全二叉树的判断涉及树的遍历和节点的填充情况。以下是详细分析:
完全二叉树的定义:完全二叉树除了最后一层可能不满之外,每一层从左到右的节点数目都达到最大。为了判断给定的二叉树是否为完全二叉树,可以通过遍历树,并记录树的最大深度和最后一个访问的节点。
输入处理:将输入的节点及其子节点信息存储在数组中。使用两个数组l
和r
分别存储左右子节点的位置。检查数组check
用于记录每个节点的子节点数。
根节点的确定:找出所有子节点数为0的节点作为根节点。通常整个树只有一个根节点。
深度优先搜索:通过递归深度优先搜索遍历树,记录每个节点,并更新最大索引max_idx
和最后访问的节点last
。
判断完全二叉树:如果输入的节点数n
等于最大索引max_idx
,说明树是完全二叉树,返回“YES”并输出根节点的编号;否则返回“NO”。
以下测试示例:
测试 CASE 3:n=2,树的结构可能有根节点1,没有右子节点,左子节点可能有2,此时max_idx=2,n=2,返回“YES 2”。
测试 CASE 2:n=1,树只有一个节点,是完全二叉树,返回“YES 1”。
通过这种方法,可以正确判断给定的二叉树是否为完全二叉树。
转载地址:http://wtzqz.baihongyu.com/