题解 | #完全二叉树#

完全二叉树

https://ac.nowcoder.com/acm/problem/214861

1、先理解完全二叉树的概念;

2、如果是深度相同的满二叉树,叶子节点的个数是2的i次方,找出这个i是多少;

3、分别计算最后一排叶子节点的个数和倒数第二排叶子节点的个数,相加得结果。

num = 4045
i = 0
total_num = 0
while True:
    pre_total_num = total_num
    total_num += 2 ** i
    if pre_total_num < num <= total_num:
        break
    i += 1

result = 2**i - ((total_num - num) // 2 if (total_num - num) % 2 == 0 else (total_num - num) // 2 + 1)
print(result)

4、考试不可能只有固定输入,需要考虑下边界情况,如节点为0,直接返回0 ,上面代码需要改进

全部评论

相关推荐

黎明azzz:刘女士吓坏了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务