![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 60
zhenzhu2022
这个作者很懒,什么都没留下…
展开
-
二叉树例题(二)
【例题1】二叉树采用链式存储结构,设计算法实现左右子树的互换。ps:交换左右子树是指交换每一个结点的左右子树【思路】原创 2022-04-17 11:05:04 · 281 阅读 · 0 评论 -
树的应用(堆和哈夫曼树)
目录堆哈夫曼树(最优二叉树)堆n个元素的序列,K = {k1, k2,…,kn},把它的所有元素按完全二叉树层序存储在一个一维数组中,并满足:Ki <= K2i 且 Ki<=K2i+1 ,或Ki >= K2i 且 Ki >= K2i+1,则称为小堆(或大堆)。最大堆: 根节点最大的堆最小堆: 根节点最小的堆。ps:堆中的元素可以重复堆的操作#include<stdio.h>#include<stdlib.h>typedef stru原创 2022-04-17 11:03:50 · 478 阅读 · 0 评论 -
二叉树的例题(一)
树结构的创建typedef struct TreeNode *BinTree;struct TreeNode{ int data; BinTree left; BinTree right;};【例题1】输出二叉树的叶子结点有条件输出问题。可以在二叉树的任意一个遍历算法中增加检测结点的 “左右子树是否都为空” 条件判断语句。void PrintLeaves(BinTree BT){ if(BT) { if(!BT->left&&!BT->right)原创 2022-04-13 15:23:40 · 1494 阅读 · 2 评论 -
二叉树的遍历
目录一、先序遍历二、中序遍历三、后序遍历四、非递归算法(以中序遍历为例)五、层序遍历六、附STL中栈和队列的常用函数栈队列建立树结构typedef struct TreeNode *BinTree;struct TreeNode{ int data; BinTree left; BinTree right;}; 一、先序遍历(1)访问根节点(2)先序遍历左子树(3)先序遍历右子树先序遍历二叉树的递归算法在二叉链表上的实现:void PreOrderTraversal(BinTre原创 2022-04-12 23:14:13 · 79 阅读 · 1 评论 -
平衡二叉树
定义:平衡二叉树是一棵二叉排序树,或者为空,或者满足以下条件:(1)左右子树高度差的绝对值不大于1;(2)左右子树都是平衡二叉树。平衡因子:对于二叉树中任一结点T,其平衡因子(Balance Factor,简称 BF)定义为BF(T) = hL-hR,其中hL和hR分别为T的左、右子树的高度。平衡化旋转:如果在一棵 AVL 树中插入一个新结点后造成失衡,则必须重新调整树的结构,使之恢复平衡。我们称此调整平衡的过程为平衡旋转。平衡化旋转的类别LL型:新插入结点在A的左孩子(L)的左子树原创 2022-04-07 22:29:27 · 3871 阅读 · 3 评论