首页 > 其他分享 >树和二叉树的基本概念

树和二叉树的基本概念

时间:2023-08-27 23:23:50浏览次数:32  
标签:结点 子树 定义 树结构 二叉树 树中 基本概念

树和二叉树的基本概念

树的定义

image-20230827104636188

树是一个递归的定义了,也就是说树中一个结点和其孩子结点都可以看成一个树.

树有多种表示方式但是我们通常使用第一种递归的定义来表示树结构.

image-20230827105026376

树的基本术语

根结点:非空树中没有前驱结点的结点.

结点的度:结点拥有的子树数,也就是该结点向下直接连接的结点个数.其中如果一个结点的度为0,则该结点为叶子结点,否则为非叶子结点.

树的度:树中结点度的最大值.

树的深度:树中结点的最大层次.

结点的祖先:从根到该结点所经分支上的所有结点。都是该结点的子孙.
结点的子孙:以某结点为根的子树中的任一结点。以该结点形成的树,树中所有的结点都叫做该节点的子孙.

结点的子树的根称为该结点的
孩子,该结点称为孩子的双亲.这是一个双向定义.

image-20230827110621225

树和森林

树一定是森林,森林不一定是树

将一颗树的根节点删除就可以变成森林,同时一片森林加上一个根结点可以变成一棵树.

image-20230827111029867

有序树和无序树

如下图,如果我们规定T1,T2,T3必须有序,如果T1,T2,T3交换顺序之后就不是原本的树了,这叫做有序树.

如果我们规定下面的T1,T2,T3交换顺序之后还是这颗树的话,叫做无序树.

image-20230827111411238

树结构

根结点:无双亲结点.

叶子结点:无孩子结点.

其他结点:一个双亲结点多个孩子结点.

image-20230827112039542

二叉树的定义

一种非常重要的数据结构,我们研究树结构主要研究的就是二叉树.

image-20230827112221403

特点

1.二叉树中不存在结点的度大于2的结点.

2. 二叉树中的左右子树的次序一定不能颠倒

二叉树可以是空集合,二叉树中结点的度可以为0,1,2

image-20230827113231243

二叉树不是树的特殊情况,它们是两个概念.

就算二叉树只有一个几点还是要区分左右子树的,但是树如果只有一个和结点,就不需要区分子树.

树当结点只有一个孩子时,就无须区分它是左还是右的次序。因此二者是不同的。这是二叉树与树的最主要的差别

image-20230827113458853

二叉树可以解决的问题

image-20230827113534814

二叉树的抽象数据类型定义

image-20230827113616542

二叉树的性质

性质1:

在二叉树的第i层上至多有pow(2,i-1)个结点(i≥1).

image-20230827113821567

image-20230827113830156

性质2:

深度为k的二叉树至多有pow(2,k)-1个结点(k≥1)

深度为k时至少有k个结点,此时的二叉树退化为一条链

image-20230827114210791

性质3:

对任何一棵二叉树T,如果其叶子数为n0,度为2的
结点数为n2,则n0=n2+1

证明:从下向上看的话,除了根结点之外其余的每个结点都和双亲之间有一条边.所以有n个结点的二叉树的边数为n-1个.

从上向下看,

标签:结点,子树,定义,树结构,二叉树,树中,基本概念
From: https://www.cnblogs.com/harper886/p/17661083.html

相关文章

  • 剑指Offer 32 - III. 从上到下打印二叉树
    题目链接:剑指Offer32-III.从上到下打印二叉树题目描述:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。解法思路:本题在一题的基础上,区分打印方向,加一个bool型的方向变......
  • 剑指Offer 32 - II. 从上到下打印二叉树 II
    题目链接:剑指Offer32-II.从上到下打印二叉树II题目描述:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。解法思路:本题与上题的唯一区别就是在输出的时候,要将同一层的数输出在一行,这就意味着你需要知道哪些数是在一行的;这里巧妙的利用求队列......
  • 剑指Offer 32 - I. 从上到下打印二叉树
    题目链接:剑指Offer32-I.从上到下打印二叉树题目描述:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。解法思路:本题就是从考察二叉树的层序遍历,直接上代码:代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......
  • 二叉树层序遍历队列实现
    参考:二叉树的层序遍历(两种方法实现)_askunix_hjh的博客-CSDN博客题解|#求二叉树的层序遍历#_牛客博客(nowcoder.net)题解二:BFS(迭代)主要思路:广度优先8.27用到的思路是广度优先,循环,不是递归......
  • 剑指Offer 28. 对称的二叉树
    题目链接:剑指Offer28.对称的二叉树题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。解法思路:采用递归的方法,依次遍历根节点的左子树和右子树,判断左子树的左子树与右子树的右......
  • 剑指Offer 27. 二叉树的镜像
    题目链接:剑指Offer27.二叉树的镜像题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像。解法思路:此题本质上就是一个二叉树遍历的问题:在遍历的过程中,交换左右子树即可。代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......
  • [刷题记录Day22]Leetcode二叉树
    No.1题目二叉搜索树的最近公共祖先思路递归法BST特性如何利用?在BST中,公共祖先一定在p、q数值范围的中间利用BST特性定向搜索注意递归遍历一条边和遍历整棵树的写法不同递归分析返回值:节点,参数:当前节点,p,q终止逻辑:发现当前节点为空,则直接返回当前节点;为什么不用判断p......
  • 一、基本概念和基本类型
    基本概念和基本类型编程语言的分类(概念)1.编译型语言:产生一个额外的文件,电脑能够识别的内容,运行是直接运行编译后的额外的文件。2.解释型语言:不会产生额外的文件,并且运行时翻译,运行时从上到下一行翻译一行。变量(语法)变量的定义:他是一个可变的量(它的值可以发生改变)变量的作用:保存值(......
  • 二叉树的链式存储结构 C++代码实现
    /*二叉树的链式存储结构*/#include<iostream>usingnamespacestd;/*二叉链表的定义*/typedefstructBiTNode{chardata;structBiTNode*lchild,*rchild;}BiTNode;typedefBiTNode*BiTree;//*************************************************......
  • 二叉树用顺序表实现 C++代码实现
    /*二叉树用顺序表实现*/#include<iostream>usingnamespacestd;/*完全二叉树顺序表的定义*/#defineMAX_BITREE_SIZE100typedefintSqBiTree[MAX_BITREE_SIZE];/*创建一个二叉树顺序表*/voidCreateBiTree(SqBiTree&T){inti;cout<<"输入元素个数:";......