摘要: 7.7、二叉树、树、森林 定义树可以使用,孩子兄弟表示法,做指针表示孩子,右指针表示树 typedef struct CSNode{ ElemType data; struct CSNode *firstchilde,*nextsibling;//第一个为孩子,第二个为兄弟 }CSNOde,*CST 阅读全文
posted @ 2022-11-01 22:35 水三丫 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 7.9、平衡二叉树(Balanced Binary Tree) 简称平衡树(AVL树)—— 树上任一结点的左子树和右子树的高度只差不会超过1 结点的平衡因子 = 左子树高度 - 右子树高度 得到:平衡二叉树的结点的平衡因子只能为$-1、0、1$ ==最小不平衡树(LL)== ==最小不平衡树(RR) 阅读全文
posted @ 2022-11-01 22:33 水三丫 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 7.8、二叉排序树(BST) 二叉排序树又称二叉查找树 左子树上所有结点的值都小于根结点的值 右子树上所有结点的值都大于根结点的值 左子树和右子树又是一颗二叉排序树 左子树的结点值 < 根结点值 < 右子树的结点值 ==插入的数据的递归实现== #include <stdio.h> #include 阅读全文
posted @ 2022-11-01 22:31 水三丫 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 7.6、线索二叉树 由于二叉树结构中各种遍历(中序、前序、后序、层次)不知道结点的前驱和后继,可以利用那些没有孩子的结点的指针指向它的前驱和后继;没有前驱或者后继就指向NULL 让 ==左孩子指向前驱 右孩子指向后继== 如果在存储上,需要定义两个变量来表示这个结点指向的是==前驱和后继==还是== 阅读全文
posted @ 2022-11-01 22:29 水三丫 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 7.5、二叉树的遍历 先序遍历:根左右(NLR) 中序遍历:左根右(LNR) 后序遍历:左右根(LRN) 层次遍历:一层从左到右遍历 ==代码实现== //访问结点 void Vist(TreeNode *node){ printf("%d , ",node->data); } //先序遍历 voi 阅读全文
posted @ 2022-11-01 22:27 水三丫 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 7.3、二叉树的存储结构 ==二叉树的顺序存储== 完全二叉树,实现一些基本操作,如果不是完全二叉树最好使用链表 #include <stdio.h> #include <stdlib.h> #include<math.h> #define MaxSize 100 #define ElemType 阅读全文
posted @ 2022-11-01 22:26 水三丫 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 7、树和二叉树 7.1、树的基本概念 概念: 空树:结点数为0的数 非空树的特性: 有且仅有一个根结点 没有后继的结点称为"叶子结点"(或终端结点) 有有后继的结点称为"分支结点"(或非终端结点) 除了根结点外,每个结点都有且仅有一个前驱 每个结点可以有0个或者多个后继 属性描述: 结点的层次(深度 阅读全文
posted @ 2022-11-01 22:25 水三丫 阅读(120) 评论(0) 推荐(0) 编辑