一道二叉树题目---顺序存储二叉树位置同层的关系

我觉得现在这考试, 明显就是在考数学, 看看这道题.

 

基本上就是说满/完全二叉树的层次和序号的关系.

假设第m个节点在k层.

那么在k层,第一个节点是 2^(k-1)(从1开始,如果从0开始就是2^(k-1)-1), 最后一个元素是 2^(k-1) + (2^(k-1)-1),

也就是说2^(k-1)号 ~ 2^(k-1)+ (2^(k-1)-1) 号节点都在同一层上.

而最后一个节点  2^(k-1)+ (2^(k-1)-1) =2^k-1 的编码其实就是这颗树的节点总数, 

==>2^(k-1)号 ~ 2^k-1在同一层

设m=2^(k-1) ==> k=log_2_m+1

设n=2^k-1  ===> k=log_2_(n+1)

 所以只能蒙一下了. ⌊ 这个符号是取整的意思.  ⌊5/3⌋=1,再比如⌊10/4⌋=2

 

看一下某x的答案, 感觉关键点没有说到. 还有一段表述写错了, 少了一个括号.

 

posted @   multitude  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示