二叉树基本概念(满二叉树、完全二叉树,满二叉树,二叉树的遍历)

1. 二叉树

二叉树是每个节点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。

https://images0.cnblogs.com/i/497634/201403/270929530778327.jpg

性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)
性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)
性质3:包含n个结点的二叉树的高度至少为log2 (n+1)
性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

2. 满二叉树,完全二叉树和二叉查找树(ADT)

2.1 满二叉树

定义:高度为h,并且由2{h} –1个结点的二叉树,被称为满二叉树。

https://images0.cnblogs.com/i/497634/201403/270930282184259.jpg

 

2.2 完全二叉树

定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。

考试点:完全二叉树如果有N个节点,那么叶子节点M=(N+1)/2
特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全二叉树,而完全二叉树未必是满二叉树。

https://images0.cnblogs.com/i/497634/201403/270931211084932.jpg

 

2.3 二叉查找树

定义:二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点xkey值记为key[x]。如果yx的左子树中的一个结点,则key[y] <= key[x];如果yx的右子树的一个结点,则key[y] >= key[x]。

https://images0.cnblogs.com/i/497634/201403/270932052801072.jpg

 

在二叉查找树中:
(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点(no duplicate nodes)。

3. 二叉树的遍历

二叉树的遍历有前序遍历中序遍历后序遍历3种方式。

以下是三种遍历的顺序,前提条件都是二叉树非空。

3.1 前序遍历

(01) 访问根结点;
(02) 先序遍历左子树;
(03) 先序遍历右子树。

3.2 中序遍历

(01) 中序遍历左子树;
(02) 访问根结点;
(03) 中序遍历右子树。

3.3 后序遍历

(01) 后序遍历左子树;
(02) 后序遍历右子树;
(03) 访问根结点。

 

未完待续(改天用python写一下相应的代码)

 

参考网址:http://www.cnblogs.com/skywang12345/p/3576328.html

猜你喜欢

转载自blog.csdn.net/u010420283/article/details/83111365
今日推荐