数据结构与算法—论证任意二叉树度数为2的节点的个数等于叶节点个数减1
来源:互联网 发布:中文url seo 编辑:程序博客网 时间:2024/05/07 03:10
对于二叉树来说,节点按度数来分不外乎3种:度数为2的节点、度数为1的节点、叶节点(度数为0的节点)
既然要讨论度数和节点个数的关系。那不妨试试看能否找到总度数和节点总数的关系:
1“度”其实就是1条连接父节点和子节点的直线。如果我们把每1“度”和相应直线对应的子节点联系起来。那么派生出1“度”,就会多出1个节点。思路铺开来想,从根节点开始,到最后树成型。派生出的“度”和派生出的节点数一定相等。那么就得出了总度数和节点总数的关系:
节点总数=总度数+1(整棵树的根节点)
设度数为2的节点数为X2,度数为1的节点数为X1,度数为0的节点数为X0。那么久可以得出如下关系式:
X2+X1+X0=2X2+X1+1;
推出 X2=X0-1;
也就是我们结论:度数为2的节点个数等于叶节点数减1啦;
另外,顺便记录下另外2个结论:
1. 满二叉树定理:非空满二叉树的叶节点数等于其分支节点数加1。
如果在已知前面论证的结论下来考虑这个定理:由于满二叉树所有分支节点都是度数为2的节点,那么结论自然成立。
如果并不知道上面已经论证的结论也没关系。考虑一棵只有3个节点的满二叉树(1个根节点和两个叶子节点):此结论满足。从这开始思考。每产生1个分支节点(牢记度数为2)。便会多出1个叶子节点。为什么呢?因为要产生一个分支节点,那么这个新的分支节点必然是原来的叶子节点。而新的分支节点又有2个新的叶子节点。因此叶子节点的总数先是减少1,然后加2。相互抵消自然就是加1了。扩展开来思考,在原来结论的基础上,由于分支节点和叶子节点是等量增长。那么结论自然也还是成立了。
2. 一棵非空二叉树空子树的数目等于其节点数目加1
考虑只有1个根节点的二叉树:它有2个空子树,1个节点。因此结论成立。从这里开始考虑。每产生1个节点。空子树便会先减少1,然后增加2。就和上面结论中每多出1个分支节点,叶子节点的变化一样。因此在原来结论的基础上,由于空子树和节点等量增长。所以结论成立。
- 数据结构与算法—论证任意二叉树度数为2的节点的个数等于叶节点个数减1
- 【数据结构与算法】求完全二叉树节点的个数
- 数据结构_求二叉树中度为0,为1,为2的节点的个数以及所有节点个数
- 数据结构_求二叉树中度为0,为1,为2的节点的个数以及所有节点个数(待完善)
- 证明满节点的个数加1等于非空二叉树的树叶的个数。
- 计算二叉树中节点个数,叶节点个数,满节点个数的函数
- 学习笔记—二叉树中求度为2的节点个数
- 求二叉树的节点个数、叶子节点个数、第k层的节点个数
- 求二叉树中叶子节点个数,总的节点个数,第K层的节点个数
- 数据结构面试题/求二叉树叶子节点的个数/求二叉树第k层的节点个数
- n节点组成二叉树的个数
- n节点组成二叉树的个数
- n节点组成二叉树的个数
- n节点组成二叉树的个数
- n节点组成二叉树的个数
- n节点组成二叉树的个数
- n节点组成二叉树的个数
- 二叉树中叶子节点的个数
- Java quartz 定时任务
- python问题:IndentationError:expected an indent
- 安卓 ListView错位的一种情况 ......ViewHolder 每次都应该为所有控件赋值
- 构造函数
- C语言(11)--回文日、确定等式、fflush(stdin)、将十进制数转换成n进制数、二分法解方程
- 数据结构与算法—论证任意二叉树度数为2的节点的个数等于叶节点个数减1
- Java泛型中的标记符含义
- 数据库 分页总结
- java上传图片放大(小图等比放大,大图等比裁剪)
- 常见的软件滤波算法
- 解决Android使用SurfaceView播放视频结束后黑屏问题
- Https 核心概念
- 关于cocostudio中如何获取每一帧属性framedata的问题
- 秦九韶算法—— HDU 1111 Secret Code