关于数组二叉树,我感觉这玩意太牵强了,对于比线性结构复杂的树,用数组这种线性存储方式本来就反直觉,然后我来说说我的思考吧:
数组二叉树怎么写?新建一个数组,添加节点时怎么加?直接从左到右添加数据。怎么删除节点?删除符合条件的数据,然后把后面的数据左移。可是这样的话,二叉树的整个被删除节点之后的位置都会变!
这时我想到可以用一个特殊值标记被删除的数据,然后增加数据时遍历数组,把数据添加到被标记的数据上,然后数组初始化的时候所有元素都是标记。可是这样为什么搞不成?因为我写的是泛型数组二叉树。这样的话每个数据类型都不一样,所以标记不可能统一。而且我试了试用数据类型的初始值,自定义数据类型还好说,可以用构造函数初始化对象的属性,可是如果是int,double这种内置类型,直接新建一个对象,它的数据是个随机数,完全不能当标记用!所以我就没用标记去写这个数组二叉树,只能向删除后树变化妥协了。
当然还有另一种只影响一个数据的方法,就是删除数据时,把最后一个数据移动到被删除位置上,然后currSize自减。
© 版权声明
若无特殊说明,文章版权归作者所有,请勿转载至任何平台。
THE END
暂无评论内容