一个二叉树有100个子节点数为2的节点,100个子节点数为1的节点,那么个子节点数为0的节点(叶节点)的个数为多少

一个二叉树有100个子节点数为2的节点,100个子节点数为1的节点,那么个子节点数为0的节点(叶节点)的个数为:

A. 101

B. 100

C. 200

D. 300

E. 99

F. 1

 正确答案为(A)

 

解法一:

来源:牛客网:链接:https://www.nowcoder.com/questionTerminal/fab572573a4346e5812cbfb29d8dfcd2

首先,假设该二叉树有n个节点,
则有n-1条边,这是因为除了根节点,其余的每个节点都有且只有一个父节点,
那么这n个节点恰好为树贡献了n-1条边。
这是从下往上的思考,而从上往下(从树根到叶节点)的思考,
容易得到每个节点的度数和 0*n0 + 1*n1 + 2*n2 即为边的个数。
因此,我们有等式 n-1 = n1 + 2*n2,
又因为n=n0+n1+n2,替换n,得到 n0 + n1 + n2 - 1 = n1 + 2*n2,
于是有n0 = n2 + 1。

n0=n2+1=100+1=101

 

解法二:

解析:
 由题可知,该树为一个二叉树,所以二叉树总的结点个数为0个子节点的节点n0,1个子节点的节点n1,两个子节点的节点n2。所以节点总个数 n=n0+n1+n2。

 又因为度为2的节点(n2)有两个孩子节点,度为1的节点(n1)有一个孩子节点,度为0的节点(n0)没有孩子节点。另外,根节点不是孩子节点,所以总结点数为:n=2*n2+1*n1+1。

 将两式子联立:

n0+n1+n2 = 2*n2+1*n1+1

n0 = n2+1

 所以,没有孩子节点的的节点数为有两个孩子节点的节点数+1,带入题中数据,可得101,故选A。
--------------------- 
原文链接:https://blog.csdn.net/weixin_40739833/article/details/81212329

你可能感兴趣的:(数据结构)