为什么结果中有11个null而不是10个null

来源:9-3 创建线段树

yushou

2018-06-12

如图中所示,在构建例程中的线段树时,我在最后只画了10个NULL,而程序运行了11个NULL,请问我画的错在那里?

http://img.mukewang.com/szimg/5b1f78d8000155f016001200.jpg

写回答

1回答

liuyubobobo

2018-06-12

按照你的画法,每个叶子节点左右都是NULL,不管叶子节点有几个,最后肯定有偶数个NULL。我不确定你在程序中是如何验证的?看看是否是程序有问题?


你的根节点区间是[0...5],一共包含6个元素(0,1,2,3,4,5),最后每个叶子节点都包含一个元素,你又计算每个叶子元素有左右两个NULL,最终应该有12个NULL。看看是你得到的11是最后一个NULL的索引?(从0开始算,索引11对应第12个元素)


课程的所有代码都可以直接在课程的官方github中找到,可以尝试运行课程的官方github代码,看是否有同样的问题?传送门:https://github.com/liuyubobobo/Play-with-Data-Structures


加油!

0
6
king_zl
回复
yushou
其实你算一下数组长度加上null个数,刚好为4N,线段树这块我感觉讲的不是很详细,要思考的地方很多
2018-11-14
共6条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程