数据结构--二叉树
2016-01-27 14:46
369 查看
为什么使用二叉树?
二叉树结合了另外两中数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入和删除数据项的速度也和链表一样。
在有序数组中插入或删除数据项太慢
当在有序数组中插入一个新数据项,就必须首先找到新数据项插入的位置,然后把所有比新数据项大的数据项向后移动一位,来给新数据项腾出空间。这样多次的移动很费时,平均来讲要移动数组中一半的数据项。
在链表中查找太慢
在链表中查找数据,必须从头开始,依次访问链表中的每个数据项,直到找到该数据项为止。即使是有序的链表还是必须从头开始依次访问数据项,因为链表不能直接访问某个数据项,必须通过数据间的链式引用才可以。
什么是二叉树?
树中的每个节点最多只能有两个子节点,这样的树就称为“二叉树”。二叉树每个节点的两个子节点称为“左子节点”和“右子节点”。
二叉树的遍历
二叉树结合了另外两中数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入和删除数据项的速度也和链表一样。
在有序数组中插入或删除数据项太慢
当在有序数组中插入一个新数据项,就必须首先找到新数据项插入的位置,然后把所有比新数据项大的数据项向后移动一位,来给新数据项腾出空间。这样多次的移动很费时,平均来讲要移动数组中一半的数据项。
在链表中查找太慢
在链表中查找数据,必须从头开始,依次访问链表中的每个数据项,直到找到该数据项为止。即使是有序的链表还是必须从头开始依次访问数据项,因为链表不能直接访问某个数据项,必须通过数据间的链式引用才可以。
什么是二叉树?
树中的每个节点最多只能有两个子节点,这样的树就称为“二叉树”。二叉树每个节点的两个子节点称为“左子节点”和“右子节点”。
二叉树的遍历
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C++非递归队列实现二叉树的广度优先遍历
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例