1、树的相关概念
//树:树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合。(像一个倒挂的树,根朝上,枝叶朝下)
//1、关于树的概念
//节点的度:一个节点含有的子树的个数称为该结点的度。
//叶子节点:度为0的结点称为叶子结点。
//分支结点:度不为0的结点称为分支结点。
//父结点:若一个节点含有子节点,则这个结点为其子节点的父节点。
//子结点:若一个结点含有父节点,则这个结点为其父节点的子节点。
//节点的层次:从根开始定义,根为第一层,根的子节点为第二层,以此类推。
//树的高度或深度:树中节点的最大层次。
//节点的祖先:从根到该节点所经分支上的所有节点(自己是不是自己的祖先,看题目的说明)。
//子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
2、树的结构特点
//2、树的结构特点
//a 子树是不相交的;
//b 除了根节点外,每个节点有且仅有一个父节点;
//c 一颗N个结点的树有(N-1)条边
3、树的表示
//3、树的表示
//树的最优表示方式:左孩子右兄弟表示法
typedef int DataType;
struct TreeNode
{
DataType data;
struct TreeNode* firstChild1; //第一个孩子结点
struct TreeNode* pNextBrother; //指向其下一个兄弟结点
};
4、二叉树的性质及相关习题
//4、二叉树
//概念:一颗二叉树是结点的有限集合,该集合:
//a 或者为空
//b 由一个根节点加上两颗称为左子树和右子树的二叉树组成。
//4.1 满二叉树:一个二叉树,如果每一个层的节点数都达到最大值,则这个二叉树就是满二叉树。【也就是说,如果一个二叉树的层数为:k,且
//结点总数为 2^k-1,则它就是二叉树】
//4.2 完全二叉树:一个层数为k的二叉树,其前k-1层的节点都是满的,第k层的结点不是满的,但第k层的结点是从左至右连续。
// 完全二叉树的结点分为:度为0的结点、度为1的结点(有1或0个)、度为2的结点【总数=n0+n1+n2】
//4.3 二叉树的性质
// 对于任意二叉树而言:
//a 若规定根节点的层数为1,则一颗非空二叉树的第k层上最多有2^(k-1)个结点。
//b 若规定根节点的层数为1,则深度为k的二叉树的最大节点数为(2^k-1);
//c 对于任意一颗二叉树,如果其叶子节点(度为0的结点)的个数为n0, 度为2的结点个数为n2,则有:n0=n2+1;
// 对于满二叉树而言:
//d 若规定根节点的层数为1,具有n个结点的满二叉树的深度: k=log2(n+1).
//对于完全二叉树而言:
//高度为h的完全二叉树,其节点范围为:[2^(h-1),2^h-1]。【节点最少时,最后一层只有一个节点;节点最多时,最后一层的节点是满的】
//关于二叉树性质的习题
//(1)某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为(B)
// A 不存在这样的二叉树 B 200 C 198 D 199
//(2)在具有2n个结点的完全二叉树中,叶子节点的个数为:(A)
// A n B n+1 C n-1 D n/2
//(3)一个具有767个节点的完全二叉树,其叶子节点个数为:(B)
// A 383 B 384 C 385 D 386
//(4) 一颗完全二叉树的结点数为531个,则这棵树的高度为:(B)
// A 11 B 10 C 8 D 12
//PS:高度为h的完全二叉树,其节点范围为:[2^(h-1),2^h-1]
5、二叉树的存储方式
//5、二叉树的存储方式
//a 顺序存储(适合满二叉树和完全二叉树)【以数组的形式存储】
//b 链式存储
typedef int BTDataType;
//二叉链:
struct BinaryTreeNode
{
struct BinaryTreeNode* pLeft; //指向当前节点左孩子
struct BinaryTreeNode* pRight; //指向当前节点右孩子
BTDataType data; //当前节点值
};
//三叉链
struct BinaryTreeNode
{
struct BinaryTreeNode* pParent; //指向当前节点双亲
struct BinaryTreeNode* pLeft; //指向当前节点左孩子
struct BinaryTreeNode* pRight; //指向当前节点右孩子
BTDataType data; //当前节点值
};
文章介绍了树的基本概念,包括节点的度、叶子节点和分支节点等,强调了树的非线性层次关系。接着详细阐述了二叉树的定义、满二叉树和完全二叉树的特性,以及二叉树的性质,如层节点数量和结点关系。最后讨论了二叉树的两种存储方式:顺序存储和链式存储(二叉链和三叉链)。
1214

被折叠的 条评论
为什么被折叠?



