最近在看基于c++的数据结构,尤其看到树,实在不太理解树这些对于c++编程有什么作用,或者说他们的联系,或者说数据结构对于编程的意义,因为不是计算机专业,所以总觉得有一种门外汉的感觉,希望大牛们能指点一二,能推荐上一两本比较好的数据结构书更好,谢谢啦!
首先树的定义很广,由一个或多个节点组成的有线集合,存在一个根节点,所有非根的节点一定有一个祖先,这是树;一个图中有n个点和n-1条边,这也是树,百度一下都有
树的结构用的最多的是二叉树,它可以优化一些操作。比如用数组模拟规模是n的一个数列,要支持在任意位置插入/删除一个数、询问第k个数是多少,那么插入删除最坏情况下是要做n次操作,询问只要1次。如果链表模拟的话插入、删除都是1次操作,但是询问最坏情况下是要做n次操作。这样最坏情况下都是可以用特殊数据卡你时间的。但是用平衡树就可以解决。平衡树的插入、删除、询问最坏情况下都是只要log2n的,这样就解决了时间的问题。并不是说平衡数就一定比数组、链表模拟好,所有高级数据结构的思想都是放弃一些操作的效率,来换取另一些操作效率变快。具体还是要看情况决定。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。