二叉树-节点分析
2016-03-23 11:38
155 查看
通过问题了解:
问题一:
某二叉树中度为2的结点有18个,则该二叉树中有
性质1:
设度为0,1和2的节点分别为x,y,z,则二叉树总结点数为S=2z+y+1或S=x+y+z,得z+1=x,即度为2的节点数比叶子节点树少1.
性质2:
问题二:
一颗二叉树共有47个节点,其中有23个度为2的节点。假设根节点在第一层。求改二叉树的深度
【答案】
6
【解析1】
【解析2】
问题一:
某二叉树中度为2的结点有18个,则该二叉树中有
性质1:
二叉树的终端结点(叶子结点)数等于双分支结点数加1. 假设二叉树中终端结点数为n0,单分支结点数为n1,双分支结点数为n2,二叉树中总结点数为n,因为二叉树中所有结点度数均小于或等于2,所以有:n=n0+n1+n2;另一方面,二叉树中所有结点的分支数(即度数)应等于单分支结点数加上两倍的双分支结点数,即n1+2×n2.由树的性质1,有:n=n1+2×n2+1.根据以上两个式子,我们可以得出下面这个等式成立:n0+n1+n2= n1+2×n2+1,所以n0=n2+1.
设度为0,1和2的节点分别为x,y,z,则二叉树总结点数为S=2z+y+1或S=x+y+z,得z+1=x,即度为2的节点数比叶子节点树少1.
性质2:
2的结点数比叶子结点数少1,18+1=19
问题二:
一颗二叉树共有47个节点,其中有23个度为2的节点。假设根节点在第一层。求改二叉树的深度
【答案】
6
【解析1】
根据二叉树的性质,度为0的结点个数比度为2的结点多一个。所以本题中度为0的结点的个数为24。在二叉树的第k层上,最多有2k-1(k>=1)个结点。所以第一层上最多1个结点,第二层上最多2个结点,第三层上最多4个结点,第四层上最多8个结点,第5层上最多16个结点。前5层的总共结点个数等于31,而本题度为2的结点个数为23,因此第5层上只能有8个度为2的结点,即在第6层上还有16个度为0的结点。
【解析2】
n0=n2+1.所以n0=24,n2=23,一共47.即不存在度为1的结点,为完全二叉树。深度为k的完全二叉树结点最多有2的k次方-1个结点,故为(2^k)-1<=47,故得到【解析1】的计算方式;计算反向每层节点数应该是48》24》12》6》3》1完成。故结果为6
相关文章推荐
- Kemans算法及其Python 实现
- 常用修图工具的一些使用技巧及问题解决方法——ai
- Oracle性能监控脚本
- hdu3336(kmp+dp)
- org.apache.cxf.interceptor.Fault: The given SOAPAction ... does not match an operation
- JS随机洗牌算法之数组随机排序
- 响应式栅栏布局
- sql字符串拼接
- React-开发工具
- 13.Quartz2D
- 三方库
- Android之NFC
- Java千百问_02基本使用(005)_Mac环境下无法打开eclipse怎么办
- OpenMP
- php isset — 检测变量是否设置
- MFC坐标空间与映射模式
- alembicTool_lsObject
- create_string_buffer()
- 每次运行xcode在真机上,或者archive打包的时间,都会弹出输入用户名和密码的弹框
- nginx动静分离