二叉树相关知识总结

1、树型结构

**1.1概念:**树是一种非线性的数据结构,它有n个(n>=0)有限节点组成一个具有层次关系的集合.

1.2特点:

1、有一个特殊的节点称为根节点,根节点没有前驱。
2、除根节点外,其他节点被分成M(m>0)个互不相交的集合,每个集合都是与树类似的子树。每个节点有且只有一个前驱,可以有0个或者多个后继。
3、树是递归定义的
1.3概念:

节点的度:一个节点含有子树的个数称为节点的度
树的度:一棵树中,最大的节点的度称为树的度

叶子节点或终端节点:度为0的节点称为叶子节点

双亲节点或父节点:若一个节点含有子节点,则这个节点称为子节点的父节点

孩子节点或子节点:一个节点含有的子树的根节点称为这个节点的子节点

跟节点:一棵树中,没有双亲节点的节点称为根节点

节点的层次:从根节点定义起,根为第1层,根的子节点为第2层,以此类推

树的高度或深度:树中节点的最大层次

非终端节点或分支节点:度不为0的节点

兄弟节点:具有相同父节点的节点称为兄弟节点

堂兄弟节点:双亲在同一层的节点称为堂兄弟节点

节点的祖先:从根到该节点所经分支上的所有节点

1.4树的表述形式:

class TreeNode{
int val; // 树中存储的数据
TreeNode firstChild //第一个节点的引用
TreeNode nextBrother //下一个兄弟的引用

**1.5树的应用:**树一般用系统文件管理

2、二叉树

**2.1概念:**一棵二叉树是节点的有限集,该集合 或者为空或者由根节点和两颗
棵别称为左子树和右子树的二叉树组成。

2.2特点:
1、,每个节点最多有两个子节点,即不存在度大于2的节点
2、二叉树的子树有左右之分,即二叉树的左右子树不能颠倒,所以二叉树是有序树

2.3两种特殊的二叉树:
1、满二叉树:如果每个层数的节点都达到最大值,则称这个二叉树为满二叉树。即若一棵二叉树的层数为K,总节点达到2^k-1,则它就是满二叉树。

2、完全二叉树:完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个节点的二叉树,当且仅当每个节点都与深度为K的满二叉树中编号从1到n的节点一一对应称之为完全二叉树。完全二叉树是效率很高的数据结构。

2.4二叉树的性质:
1、若规定根节点的层数为1,则滴 i 层的结点数最多为2^(i-1)个。
2、若规定只有根节点的二叉树深度为1,则深度为K的二叉树最多有2^(k)-1个结点。
3、对于具有n 个结点的二叉树,如果按照从上到下,从左到右的方式从0进行编号。则对于序号为i的结点有:
若 i >0,双亲序号:(i-1)/2;若i=0,i 为根节点的编号,无双亲节点
若 2i+1<n,左孩子序号为2i+1,有孩子序号为2i+2

**2.5二叉树的存储:**二叉树的存储结构为:顺序存储和类似于链表的链式存储

2.6二叉树的操作:
2…6.1 二叉树的遍历:所谓的遍历,就是指沿着某条手镯路线,依次对树中的每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体问题(如打印结点内容、对结点内容进行改变等)

2.6.2遍历的方式:
1、前序遍历(Preorder Traversal 也称为先序遍历)-- 先访问根节点–>根的左子树–>根的右子树
2、中序遍历(Inorder Traversal)- -根的左子树–>根节点–>根的右子树
3、后序遍历(Postorder Traversal)–根的左子树–>根的右子树–>根节点

2.6.2 二叉树的基本操作
求结点个数、求子节点个数、求叶字结点个数、求第K层结点个数、获取二叉树的高度

接下来会在下一篇博客中将这些操作以代码形式实现。


版权声明:本文为weixin_51729311原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。