二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。
1. 许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
2. 二叉树特点是每个结点最多只能有两棵子树,且有左右之分。
3. 二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。
问题一:什么是二叉树?有几种分类?节点又是什么啊? 在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆。(1)完全二叉树――只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树;
(2)满二叉树――除了叶结点外每一个结点都有左右子女且叶结点都处在最底层的二叉树。
结点:
在是数据结构中,用来描述“树”型结构的名词。
这种结构像一根倒着的树。
每片树叶都长在一个结点上,这个结点就叫做这个叶子的父结点,这个叶子叫做你结点的子结点,也叫这棵树的叶结点,它再没有子结点了。而叶子的父结点一定还会有上面的父结点,这样一级一级上去就到了根结点,它就像是树的根,它上面再没有“叉儿”了。
问题二:树和二叉树的关系是什么? 树和二叉树的2个主要差别:
1. 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;2. 树的结点无左、右之分,而二叉树的结点有左、右之分
问题三:二叉树的度是什么含义?1度是什么意思?2度? 二叉树的度代表某个结点的孩子或者说直接后继的个数,1度是只有一个孩子或者说单子树,2度是有两个孩子或者说左右子树都有
二叉树的最大度为2
问题四:什么叫二叉树的度和深度? 二叉树结点的度数指该结点所含子树的个数,二叉树结点子树个数最多的那个结点的度为二叉树的度。
二叉树的根结点所在的层数为1,根结点的孩子结点所在的层数为2,以此下触。深度是指所有结点中最深的结点所在的层数。
问题五:二叉树的介绍 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。
问题六:二叉树中的节点和度还有叶子是什么意思 你可以这么理解:
结点:指二叉树中一个个的点,就是下图中的0、1、2、3、4、5、6;
度:指父结点下面有几个孩子结点,举两个例子你就明白了。针对结点1,他下面有两个孩子3、4,所以说结点1的度为2;针对结点4,他下面一个孩子都没有,所以说结点4的度为0;
置于遍历有一点点麻烦,但要抓住以下要点就可以了(不管任何大小的树):
前序:根结点第一个访问,然后访问左、右孩子;后序:根结点最后访问,开始先访问左、右孩子;中序:根结点第二个访问,最先访问左孩子,最后访问右孩子
以下图为例子:我把答案写给你看,你自己研究研究呢:
前序序列:0134256后序序列:3415620中序序列:3140526
问题七:C语言 什么叫完全二叉树? 若二叉树除最后一层外,其它各层的结点数都达到最大个数,最后一层所有的节点都连续集中在最左边,这就是完全二叉树
问题八:什么叫做二叉树的前驱、和后继? 前驱就是接上去的那个结点,后继就是接下去的那两个(一个)结点.这个没有什么问题吧.
线索二叉福看起来确实很乱的,你关键要先把那些左右的0和1标好,然后看要求是先序中序还是后序,把它的序列写出来,根据这个序列去连线就不会错了.
问题九:二叉树中的度是什么意思,叶子结点是什么? 度为2 就是有2个孩子结点的结点
叶子结点 就是度为0的结点 就是没有孩子结点的结点
你这题出的有问题 有好多种答案吧 深度为7 可能度为2的结点 一个都没。。。
给你个公式
n0:度为0的节点数,n1:度为1的结点 n2:度为2的节点数。 N是总结点
n0=n2+1;
N=n0+n1+n2
问题十:二叉树宽度是什么? 要求二叉树的宽度的话,则可根据树的高度设置一个数组temp。temp[i]用于存放第i层上的结点数(即宽度)。在访问结点时,把相应计算该结点下一层的孩子数并存入相应数组元素中,遍历左子树后向上返回一层计算右子树的宽度,并取出最大的一个数组元素作为树的宽度。
#define M 10 假设二叉树最多的层数
int Width(BinTree T)
{
int static n[M]向量存放各层结点数
int static i=1
int static max=0最大宽度
if(T)
{
if(i==1) 若是访问根结点
{
n[i]++第1层加1
i++到第2层
if(T->lchild)若有左孩子则该层加1
n[i]++
if(T->rchild)若有右孩子则该层加1
n[i]++
}
else
{ 访问子树结点
i++下一层结点数
if(T->lchild)
n[i]++
if(T->rchild)
n[i]++
}
if(maxlchild)遍历左子树
i--往上退一层
Width(T->rchild)遍历右子树
}
return max
}算法结束
希望可以给你帮助!