......
什么是平衡二叉树 “平衡因子”(Balance Factor,BF):左子树高度减右子树高度的值BF(T)=HL-HR 平衡二叉树(Balance Binary Tree)也叫AVL树,可以是空树,否则任一结点的左右子树高度差的绝对值不超过1,即 |BF(T)| ≤1 结点数为 n 的AVL树,最大高度为$O(log_2......
什么是二叉搜索树 二叉搜索树(BST, Binary Search Tree)也称二叉排序树或二叉查找树。 二叉搜索树可以为空,若不为空,则满足: 非空左子树的所有键值小于其根节点的键值 非空右子树的所有键值大于其根节点的键值 左右子树都是二叉搜索树 操作的函数: Position Find( ElementType X, BinTree BST ): 从二叉搜索树BST 中查找元素X,返回其所......
三种常用遍历 先序遍历 void PreOrderTraversal( BinTree BT ) { if( BT ) //如果BT不空 { printf("%d", BT->Data); PreOrderTraversal( BT->Left ); //递归 PreOrderTraversal( BT->Right ); //递归 } } 中序遍历 void PreOrderTraversal( BinTree BT ) { if( BT ) //如果BT不空 { PreOrderTraversal( BT->Left ); //递归 printf("%d", BT->Data); PreOrderTraversal( BT->Right ); //递归 } } 后序遍历 void PreOrderTraversal( BinTree BT ) { if( BT ) //如果BT不空 { PreOrderTraversal( BT->Left ); //递归 PreOrderTraversal( BT->Right ); //递归 printf("%d", BT->Data); } } 💡 先序、中序、后序遍历过程,......
二叉树的定义 度为2的树,可以为空。若不为空则由根节点和左子树TL和右子树TR两个不相交的二叉树组成 二叉树的子树有左右顺序之分 特殊二叉树:斜二叉树、完美二叉树(满二叉树)、完全二叉树 二叉树的重要性质 一个二叉树第 i 层的最大结点数为$2^{i-1}$,i≥1 深度为k的二叉树有最大结点总......
引子 查找Searching:根据某个给定的关键字K,从集合R中找出关键字与K相同的记录。 静态查找:集合中的记录是固定的。没有插入和删除操作,只有查找。 动态查找:集合中的记录是动态变化的,除查找还可能发生插入删除。 顺序查找 创建 typedef struct Lnode *List; struct Lnode{ ElementType Element[MAXSIZE]; int length; } 无哨兵 int SequentialSearch(List Tbl, ElementType K) { int i; for(i = Tbl->Length; i>0 && Tbl->Element[i]......
多项式的加法运算实现 💡 主要思路:相同指数的项系数相加,其余部分进行拷贝。 采用不带头结点的单向链表,按照指数递减的顺序排列各项。 构造: struct PolyNode { int coef; //系数 int expon; //指数 struct PolyNode *link; //指向下一个结点的指针 }; typedef struct PolyNode *Polynomial; Polynomial P1, P2; 算法思路: 两个指针P1和P2分别指向这两个多项式第一个结点,不断循环: P1->expon......
什么是队列 队列(Queue):具有一定操作约束的线性表 插入和删除操作:只能在一段插入,而在另一端删除 数据插入:入队列(AddQ) 数据删除:出队列(DeleteQ) 遵循先来先服务 先进先出(FIFO) 队列的抽象数据类型描述 类型名称:队列(Queue) 数据对象集:一个有0个或多个元素的......
什么是堆栈 堆栈(Stack):具有一定操作约束的线性表 只在一端(栈顶 Top)做插入、删除 插入数据:入栈(Push) 删除数据:出栈(Pop) 遵循“后入先出”:Last In First Out(LIFO) 堆栈的抽象数据类型描述 类型名称:堆栈(Stack) 数据对象集:一个有0个或多个元素的有穷线性表......