数据结构 树笔记-2 二叉树的性质

下午只是大概想了一下可以程序化的思路,大概就是:

1. 这是对一棵满二叉树的 宽度优先遍历 深度优先遍历 的结合

2. 并且不能随便做宽度遍历,必须保证当前这一层中的某个结点的父结点已被选中,才能在此层选中这个结点

感觉过程实现起来还是挺复杂的,先不写代码为难自己了。

暂时先有个模糊的思路,以后等着积累多了,形成更清晰的思路,再呈现代码吧。

 

那么,知道了树与二叉树的区别,能继续说出3个结点的有几种形态么?

已知3结点的二叉树的5种形态是:

——绿 + 红(1种)

——绿 + /黄(2种)

——红 + /灰(2种)

树不分左孩子和右孩子,所以3结点的树有3种形态,具体是:

——绿 + 红(1种)

——绿 + /黄(1种)

——红 + /灰(1种)

 

二叉树性质

1. 二叉树的

1层最多有1个结点——树的根

2层最多有1*2=2^1个结点

3层最多有(1*2*2=2^2个结点

......

同理可知,n层最多有2^(n-1)个结点

最多的含义:每个结点如果有孩子,同时有左孩子和右孩子

2. 深度为k的二叉树,如果每一层均有最多的结点,那么这棵二叉树最多有结点数

1+2^1+2^2+......+2^k-1))=1*(1-2^k)/(1-2)=2^k-1

备注:

等比(公比:q)数列(一共n项)的求和公式:首项*1-q^n/1-q

3. 叶子结点(度为0的结点)的数目=度为2的结点的个数+13

证明:

下面要构建一个等式,这个等式的依据是:

二叉树的结点总数=树的根个数+非树根结点的个数(1

树的根只有1个,所以树的根的个数=1

非树根的结点均有一个直接前驱,所以非树根结点的个数=二叉树的分支数

二叉树的分支数+1=结点的数目(2

上面是由(1)得到(2)的过程,下面讲述由(2)得到(3)的过程

n0——度为0的结点(叶子结点)个数,构成总分支数0*n0=0

n1——度为1的结点个数,构成总分支数1*n1=n1

n2——度为2的结点个数,构成总分支数2*n2=2n2

所以(2)改写成:

0+n1+2n2 + 1 = n0+n1+n2

n2+1 = n03

证明结束。

公式(3)代表的性质在考试中经常作为解题的工具,把这个公式的证明过程理解透彻,知道怎么来的是非常基础的一件事情,
但基础不代表简单。所以多看几遍上面的证明过程,多理解,多自己推导都是非常正常的。

九层之台,起于累土;千里之行,始于足下。基础的重要性是怎么强调都不为过的,但是真正重视的没有几人。

厚积才能薄发......,你懂的。所以我承认现在的自己不厉害,但是我尽力学的透彻一点,明白一点,终归是有 好处的。

 

满二叉树

的含义就是每一层都装满了结点,其实就是前面提到的最多的含义:每层结点都做到最多

所以

满二叉树的第n层结点的结点个数是2^(n-1)

满二叉树(k层)的结点总数是2^k-1

 

完全二叉树

完全二叉树就是除了最后一层可以不装满结点,其余层均装满结点的二叉树

所以k层完全二叉树的前k-1层构成的树是一个满二叉树

 

先整理到这里,因为已经23:41了,不能因为赶进度而影响不紧急的要事的进度,

下次接着讲完全二叉树的性质,晚安!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值