• 树的特点:

结点的度:该结点拥有非空子树的个数。树的度:所有结点的度的最大值。层次:第一层为树的根结点所在层,第二层为根的儿子所在层...。树的高度(深度):树的最大层次。结点的高度:从最深的叶子结点往上数起。结点的深度:从根结点数起

  • 二叉树:

二叉树是递归定义的,其结点有左右孩子之分。

二叉树有顺序存储和链式存储两种存储结构,其中链式存储最为常用,顺序存储结构适合用于完全二叉树的存储,将结点存储在数组中,根据下面树的性质4通过数组下标进行访问,又如之前的堆排序中采用的就是完全二叉树的顺序存储结构。

二叉树的五种形态:1,空二叉树  2,只有一个根结点的二叉树  3,只有左子树的二叉树   4   只有右子树的二叉树    5  完全二叉树

二叉树链式存储结点定义如下:

typedef struct btNode
{char data;//结点中的信息struct btNode* lc;//左孩子结点struct btNode* rc;//右孩子结点
}btNode;
  • 树的性质:

1,总结点数=总分支数+1。可推在二叉树中,n0+n1+n2=2*n2+n1+1   得:n0=n2+1

2,n个结点的树含有2n个指针,其中非空指针数位n-1,空指针数位n+1

3,二叉树中第i层最多有2^(k-1)个结点,高(深)度为k的二叉树中最多有2^k-1个结点

4,n个结点的完全二叉树中,按从上至下,从左到右对数编号,根结点编号为1,则对于编号为i的结点:若i不等于1,那其双亲编号为i/2(向下取整);若2*i小于等于n,那其左孩子编号为2i;若2*i+1小于等于n,那其右孩子编号为2i+1。根结点编号为0的话:若i不等于0,那其双亲结点为i/2-1(向上取整);在其左右孩子存在的条件下,左孩子为2i+1,右孩子为2i+2

5,n个结点可以构成h(n)种不同的二叉树,h(n)=C(2n,n)/(n+1),h(n)为卡特兰数

6,n个结点完全二叉树的高度为logn+1(logn向下取整)或log(n+1)(向上取整)

  • 树的三种存储结构:

1,双亲表示法(树编号从1开始,根结点的双亲结点(父结点)为-1)

typedef struct
{char data;//结点中的信息int parent;//父结点
}node;

2,孩子表示法(类似于图的邻接表表示法)

此处无代码,无图,读者可自行想象。(有点懒...)

3,孩子兄弟表示法(用于树与二叉树的转换,口诀为左孩子,右兄弟)

typedef struct node
{char data;//结点中的信息struct node* son;//孩子结点struct node* brother;//孩子的兄弟结点
}node;

树的先序遍历等同于其转换二叉树的先序遍历;树的后序遍历等同于其转换二叉树的中序遍历。森林的先序遍历等同于其转换二叉树的先序遍历;树的中序遍历等同于其转换二叉树的中序遍历。

树与二叉树(c/c++)相关推荐

  1. 数据结构--树和二叉树

    文章目录 树和二叉树 树 1.树的定义 2.树的逻辑表示 3.树的基本术语: 4.树的性质 5.树的基本运算 二叉树 二叉树的存储结构 二叉树的遍历 树和二叉树 树 1.树的定义 2.树的逻辑表示 树 ...

  2. 6-5-树的双亲表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...

    课本源码部分 第6章  树和二叉树 - 树的双亲表示法 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版) ...

  3. 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)

    目录 树和二叉树 一.树 2.有序树和无序树 3.森林 4.树的基本性质 二.二叉树的概念 (1)二叉树的编号 1.二叉树和度为2的有序树的区别: 2.满二叉树 3.完全二叉树: 4.平衡二叉树: 5 ...

  4. 带父节点的平衡二叉树_学习数据结构--第四章:树与二叉树(平衡二叉树)

    第四章:树与二叉树(平衡二叉树) 1.平衡二叉树 平衡二叉树:AVL,任意结点的平衡因子的绝对值不超过一. 平衡因子:左子树高度 - 右子树高度 如上图二叉树,是否是平衡二叉树? 可以把所有结点的平衡 ...

  5. 数据结构-王道-树和二叉树

    [top] 树和二叉树 树:是\(N(N\geq0)\)个结点的有限集合,\(N=0\)时,称为空树,这是一种特殊情况.在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点. 当\(N>1 ...

  6. 数据结构C#版笔记--树与二叉树

    图1 上图描述的数据结构就是"树",其中最上面那个圈圈A称之为根节点(root),其它圈圈称为节点(node),当然root可以认为是node的特例. 树跟之前学习过的线性结构不同 ...

  7. 树,二叉树,森林各种遍历总结:

    树,二叉树,森林各种遍历总结: 树的前序遍历,对应二叉树的前序遍历. 树的后序遍历,对应二叉树的中序遍历. 树的层次遍历,对应二叉树的后序遍历. 森林的前序遍历,对应二叉树的前序遍历. 森林的中序遍历 ...

  8. 数据结构与算法——树与二叉树详细分享

    一.树 1.定义:由n个有限节点组成一个具有层次关系的集合,看起来像一颗倒挂的树,特点: 2.特点: a.每个节点有0个或多个子节点 b.没有父节点的节点称为根节点(A) c.每一个非根节点有且只有一 ...

  9. 树与二叉树的深度优先与广度优先算法(递归与非递归)

    本博客前面文章已对树与二叉树有过简单的介绍,本文主要是重点介绍有关二叉树的一些具体操作与应用 阅读本文前,可以先参考本博客 各种基本算法实现小结(三)-- 树与二叉树   和  各种基本算法实现小结( ...

最新文章

  1. Linux 小知识翻译 - 「NTP」
  2. pythonfor循环break_python 中 for 循环 if循环 break
  3. 博客属性10个非常不错的CSS技巧
  4. SDK 和 API
  5. 正则表达式:匹配非0的整数和小数Double
  6. python自动爬取更新电影网站_python爬取电影网站信息
  7. C Coding Standard
  8. Word文档编辑技巧(一)
  9. 综合评价与决策方法02——模糊综合评判法
  10. 小丸工具箱\FFmpeg踩坑记录
  11. win11系统安装vmware虚拟机win10 汇总
  12. 如何利用Python开发一款快手加抖音自动刷视频脚本!
  13. 实战分析APP提交苹果App Store审核被拒绝的一些原因以及对策
  14. 油田大数据与创新之路的探究
  15. 尚雯婕-《6合辑》专辑[APE/FLAC整轨]
  16. Aptana工具介绍
  17. 收集到的cmd基本命令快捷打开方式
  18. UBUNTU 20.4 WIFI 驱动安装 ---TP-LINK WDN5200H
  19. 常微分方程——非齐次线性微分方程与常数变易法
  20. Java实现输出水仙花(易懂)

热门文章

  1. springcloud微服务总结四 负载均衡
  2. 《算法进阶指南》最小生成树剩余题目
  3. python中二维数组的建立,输入和输出
  4. linux 安装lnmp
  5. Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS
  6. oracle使用dbms_metadata包取得所有对象DDL语句
  7. Net设计模式实例之解释器模式(Interpreter Pattern)
  8. Docker 底层实现
  9. hdu1501 记忆化搜索
  10. 计算机网络第四章:网络层