二叉树知识

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">结点拥有的子树树称为结点的度。</span>

度为0的结点称为叶结点或终端结点。

树的度是树内各结点的度的最大值。


结点的子树的根称为该结点的孩子,该结点称为孩子的双亲


结点的层次从根开始定义,根为第一层,根的孩子为第二层。

树中结点的最大层次称为树的深度或高度


孩子表示法:

把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。

孩子兄弟表示法:

每个结点设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟。(这个表示法把一棵复杂的树变成了一棵二叉树)

二叉树:

1.每个结点最多有两棵子树

2.左子树和右子树是有顺序的

3.即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。

二叉树有五种形态:

1.空二叉树

2.只有一个根结点

3.根结点只有左子树

4.根结点只有右子树

5.根结点既有左子树又有右子树

满二叉树:

完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中的编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。


二叉树的存储结构:

完全二叉树:顺序存储结构。

二叉链表:

结点:一个数据域+两个指针域。

class TreeNode{
	int value;
	TreeNode left;
	TreeNode right;
}
遍历二叉树:

从根结点出发,按照某种次序访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。

前序遍历:

若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。

中序遍历:

若树为空,则空操作返回,否则从根结点开始(不访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。

后序遍历:

若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结点。

层序遍历:

若树为空,则空操作返回,否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值