98
99
100
101
完全二叉树除最后一层,其他层都是满结点的。 所以这里总结点200个,这里是偶数,可以判断度为1的结点是1个。 根据二叉树性质n0 = n2 + 1;叶子结点数量等于度为2的结点数+1 n0 + n1 + n2 = 200 n0 + n1 + n0 -1 =200; 2n0 = 201-n1 = 200 (完全二叉树度为1的结点个数要么1,要么0. 叶子结点数为整数,这里也可以推断出度为1的结点个数是1) n0 = 100 叶子结点数是100.
这个考查完全二叉树的特点 就是每行的节点数如果完整 都是2的整数次方
比如 1 2 4 8 16 32 64 128 所以要看到哪一层之前的节点数之和小于且最靠近200
1+2+4+8+16+32+64=127 也就是说 最后一层的叶子节点有 200-127=73个
那么上一层的叶子节点有多少个?
最后一层的叶子节点73用了上一层的73/2+1=37个,因为单独的那个叶子节点的父节点已经不是叶子了,被占用了。所以上一层只剩下64-37=27个
27+73=100个
200 节点表示 树有 7 层,前 6 层是满的 有64个节点,第 7 层有 72个节点
72 + (64 - 72/2)= 100
n = n0 + n1 + n2 ①
①代入②得:n0 = n2 + 1 ③
③代入①得:(n-1-n1)/2 = n2 ④
又因为完全二叉树的性质,n1只能是1或者0
③代入①得:n = 2n2 + n1 + 1
当n1 = 1时,节点数必为偶数
当n1 = 0时,节点数必为奇数
∴n0 = [n-1-(n+1)%2]/2 + 1 //已知节点数求叶子结点数
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题