树
CC_YXK
这个作者很懒,什么都没留下…
展开
-
树 --- 创建树
根据先序序列创建树 先序后序序列创建树 后序中序序列创建树二叉树节点的结构体如下:typedef char ElemType;typedef struct Node{ ElemType val; Node* lTree; Node* rTree;}Node;1、根据先序序列创建树只通过先序序列创建二叉树,序列必须是满二叉树的形式,因此没有元素的节点必须用特殊字符补齐...原创 2019-01-19 15:05:39 · 788 阅读 · 0 评论 -
树 --- 遍历树
先序遍历树(递归) 中序遍历树(递归) 后序遍历树(递归) 非递归先序遍历 非递归中序遍历 非递归后序遍历 层序遍历1、先序遍历树(递归)思路:第一次访问节点便进行打印。 递归遍历该节点的左子树 递归遍历该节点的右子树代码如下:void PreOrder(Node *tree){ if (tree != NULL) { cout << tre...原创 2019-01-19 16:08:53 · 275 阅读 · 0 评论 -
树 --- 基本操作
计算树中的节点个数 查找节点位置 查找某个节点的父节点 判断是否是完全二叉树 判断是否是满二叉树1、计算树中的节点个数思路:计算节点个数和计算树的深度其实本质上的一样的。树的节点个数即为左子树的节点个数加右子树节点个数加1.因此同样可以用递归来做。代码如下:int GetSize(Node* tree){ if (tree == NULL) { return 0;...原创 2019-01-19 16:32:04 · 246 阅读 · 0 评论 -
树 --- 树的线索化
树为什么要线索化? 树如何线索化? 遍历线索树1、树为什么要线索化? n个结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。因此,提出了一种方法,利用原来的空链域存放指针,指向树中其他结点。这种指针称为线索。2、树如何线索化(中序)?以中序线索化为例如果ptr->lchild为空,则存放指向中序遍历序列中该结点的前驱结点。这个结点称...原创 2019-01-19 18:58:01 · 437 阅读 · 1 评论 -
树 --- 二叉搜索树
定义:二叉搜索树,又称二叉排序树。顾名思义,它是一种树形结构,并且根据名字可以体现出它有排序和搜索两个特征。排序。对一个二叉排序树进行中序遍历,得到的是有序的序列。 搜索。在二叉排序树中对最大元素和最小元素进行搜索会十分遍历。最小元素在树的最左边,最大元素在树的最右边对于二叉排序树主要有以下操作:购买节点 释放节点 初始化树 插入元素 查找结点(非递归) 查找结点(递归) ...原创 2019-01-21 19:49:38 · 102 阅读 · 0 评论 -
AVL树
一、什么是AVL树 AVL树是自平衡的二叉搜索树(二叉查找树、二叉排序树),AVL树再二叉搜索树的基础上通过旋转来得到平衡,平衡即任意一个结点的两个子树的高度差最高为1。二、旋转首先我们来看一下如何通过旋转来使得树平衡。1、左单旋转解决如下情况:定义新的根结点指向当前根的右孩子 新根的左孩子等于旧根,旧根的右孩子等于新根的左孩子 将新根插入到旧根原来位置注...原创 2019-03-06 17:33:51 · 120 阅读 · 0 评论