
数据结构之树
文章平均质量分 78
王小文Ben
这个作者很懒,什么都没留下…
展开
-
树的基本操作
今天这一章概述树的基本操作,边写边调试边更新!!!#include#include typedef char ElemType;/*树的结点结构*/typedef struct BiTNode{ ElemType data; struct BiTNode * lchild; struct BiTNode * rchild;}BiTNode,* BiTree;原创 2014-01-11 21:53:11 · 759 阅读 · 0 评论 -
生成一颗表达式树
关于表达是计算在有关栈的文章里写的十分详细了,学到树时!发现表达式计算也是基本树学习的基础知识所以也认认真真的写完了!这里还是需要栈的只是帮助我将我们人类惯用的表达式转换成后缀表达式。再利用后缀表达式转换为树的形式。有关思路: 1、先将输入的中缀表达式转换为后缀表达式,存入一个字符数组中。2、对后缀表达式进行操作: 1)遇到数字,用它生成一颗单结点的树,并压栈;2)原创 2014-01-12 23:42:02 · 2826 阅读 · 0 评论 -
二叉查找树的定义以及几个基本操作
二叉查找树是一种特殊的二叉树,一般数据域都是数值类型的元素,原因是二叉查找树基本性质决定了,在二叉查找树中的任意结点,其数据域的数值一定大于它的左子树的所有结点,也小于它的右子树的所有结点!!!所以,是可以比较的数据域才是二叉查找树的存在意义!这里我写了几个二叉查找树的方法,前几个比较简单,唯一有点难度的是删除结点的操作!如果待删除的结点是叶子结点,非常好办,删之即可!原创 2014-01-13 02:51:25 · 2045 阅读 · 3 评论 -
AVL树的定义和基本操作
AVL树是带有平衡的二叉查找树!一颗AVL树的每一个结点的左子树和右子树的深度最多只有1的差距,这就保持了这颗二叉树的平衡!很大程度的提高了树的使用效率!当我们对树进行一系列操作(插入、删除等)后,AVL树很可能就不能保持AVL的特性,所以在进行操作时,我们必须重新平衡这颗二叉树!我们把必须重新平衡的结点叫做α(这样可以减少很多文字,又好理解),由于任意结点最多只有两个儿子,因此出现高度不原创 2014-01-15 23:35:43 · 3036 阅读 · 0 评论 -
平衡二叉树(AVL)结点删除操作
结点的删除向来是二叉树的操作中的难点,平衡二叉树中结点删除相对更是复杂,由于删除结点操作以后还要保持其平衡的特征,所以给我们删除的操作带来了一些小麻烦!之前的文章我写过一个关于AVL树的结点插入的操作,当时我在二叉树结点的定义中加入了一个height的参数,这个参数表示以该结点为根的子树的深度。在本文中我将这个参数删掉,利用一个方法Depth(),来求该结点的深度!如果读者有兴趣,原创 2014-02-24 14:48:17 · 5410 阅读 · 1 评论 -
非递归前序遍历(非递归、非栈)
前几天面试吃了一次瘪,笔试题让我非递归前序遍历,我毫不犹豫的就写了一个栈。然后利用压栈将前驱遍历迅速写了出来,当时喜滋滋的寻思今天的又比较顺利哈!面试的时候,考官问我,能不能不用栈,不递归实现呢?我顿时呆了... ... 从来都没有思考过这个问题!直接影响了我后面的答题!回来后翻阅资料,其实一颗线索二叉树很easy的解决了这个问题!这也说明了我对数据结构知识理解的不够深刻,没办法把实际原创 2014-03-17 14:50:27 · 1391 阅读 · 0 评论