二叉树
李柒岁
这个作者很懒,什么都没留下…
展开
-
【最大堆的操作】完全二叉树建立最大堆/插入/删除结点C语言实现
最大堆的插入步骤:1.将新插入元素放在size+1的位置2.向上过滤结点使之满足最大堆的特点最大堆的删除基本概念:对于一个完全二叉树,结点序号为i的左孩子是2i,右孩子是2i+1。步骤1.堆是否为空(为空则无法删除)2.若不为空,取出根结点的最大元素3.将数组下标最大的一个元素提出来,放在根结点位置4.从上到下过滤结点heap->Data[heap->size]待比较元素 过滤结点的具体操作4.1 parent*2<=heap->size//判别原创 2020-07-06 20:04:06 · 1108 阅读 · 0 评论 -
【AVL树】图解四种旋转/递归求树高/插入节点调整AVL树C语言实现
不平衡的二叉树四种类型:对应的四种调整方式:LL:LL失去平衡的情况下,可以通过一次旋转让AVL树恢复平衡。步骤如下:1.将根节点的左孩子作为新根节点。2.将新根节点的右孩子作为原根节点的左孩子。3.将原根节点作为新根节点的右孩子。RR:RR失去平衡的情况下,旋转方法与LL旋转对称,步骤如下:将根节点的右孩子作为新根节点。将新根节点的左孩子作为原根节点的右孩子。将原根节点作为新根节点的左孩子。LR:LR失去平衡的情况下,需要进行两次旋转,步骤如下:1.对根节点的左孩子进行RR旋原创 2020-07-04 18:31:54 · 1176 阅读 · 0 评论 -
二叉搜索树(BST)的插入和删除C语言
插入Bintree Insert(int X,Bintree BST){ if(!BST)//若原树为空,生成并返回一个只有一个结点的二叉树一个 { BST=malloc(sizeof(struct Binary));//有问题!!! BST->Data = X; BST->left=NULL; BST->right=NULL; } else if(X < BST->Data)原创 2020-07-03 20:13:11 · 1718 阅读 · 0 评论 -
PTA 7-3 树的同构 C语言判断两棵树是否同构
程序框架int main(){ 建立二叉树1 建立二叉树2 判断同构并输出 return 0;}思考:注意判断树的同构时,要注意利用递归函数,使程序简洁。给出两个结点,判断同构时有几种情况:从自身结点考虑:两个结点都是空的,此时同构两个结点有一个是空的,另一个不是空的,此时一定不同构两结点都不空,但储存的值不一样,此时一定不同构考虑完自身,再考虑孩子(注意考虑孩子时只考虑左孩子):4. 两个结点都没有左孩子,递归判断右孩子(此时不需要把两个结点都没有右孩子,递归判断原创 2020-07-02 16:44:38 · 1481 阅读 · 1 评论 -
二叉树C语言基本定义+操作代码+注释详解(二叉树的递归/非递归遍历方法)
二叉树C语言基本定义+操作代码+注释详解1.树的基本特点1.1.儿子兄弟表示法2.二叉树定义性质即储存2.1.二叉树的基本性质2.2.数组表示方法2.3.链表的表示方法3.二叉树的遍历3.1.先序遍历3.2.中序遍历中序遍历非递归算法3.2.后序遍历1.树的基本特点子树不相交j结点的度:结点的子树个数叶节点:度为0的结点除根节点,每个结点有且仅有一个父结点一颗N个结点的树有N-1条边查找成功时查找次数不会超过判定树的深度(n个结点的判定树深度为结点的层次:规定根结原创 2020-07-01 17:28:19 · 2863 阅读 · 0 评论