二叉树
1、满二叉树:k层满二叉树节点总数位(2^k)-1
2、完全二叉树:可以不满,但必须按顺序
告诉你一棵二叉树有N个节点,那么他的高度是多少?
2^k - 1 =N
k = log(N+1)
若根节点为第一层,那么非空二叉树的第i层上最多有2^(i-1)个节点
若根节点为第一层,那么深度为h的二叉树的最大结点数是 2^h -1
度为零的节点个数比度为二的节点个数多一个:n0 = n2 +1;
来两道题练练手,看看概念理解的怎么样?
1、某二叉树共有 399 个结点,其中 有199个为 度为2的 结点 ,则该二叉树中的叶子节点数为()
很简单吧,度为0 及叶子节点 比 度为2 (199) 多一个 ,答案为 200个
2、在具有 2n个结点的 完全二叉树中,叶子节点个数为()
完全二叉树的结点的度,只有0、1、2三种情况
假设度为0 、 1 、2的节点 分别个数为 a0、a1、a2个
则 2n = a0 + a1 + a2
2n = a0 + a1 + a0 -1
2n = 2 a0 + a1 - 1
完全二叉树度为1 的结点 要么是0个 要么是 1个
根据奇偶关系得到,a1 = 1
所以本题的答案为 n
3、一棵完全二叉树的节点总数为 531 个 ,那么 这棵树 的高度为()
假设高度为 h
2^h -1 -x = 531,可以推出 X 的范围,再把选项带进去就可以了
4、一个具有767个节点的完全二叉树,其叶子节点个数为()
假设度为0 、 1 、2的节点 分别个数为 a0、a1、a2个
767 = 2 a0 + a1 -1
a1 = 0
a0 = 384
5、在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个
设度为i的节点个数为ni,则该树总共有n个节点
n = n0+n1+n2+n3.
有n个节点的树的总边数为 n-1条,根据度的定义,总边数与度之间的关系为
n-1 = 0n0+1n1+2n2+3n3
联立两个方程可得,n0 = n2 +2 n3+1, n0 =6.
6、一颗拥有1000个结点的树度为4,则它的最小深度是( )
假设为满树,则他的深度最小,假设他是一个四叉树,高度为h,则这个树的节点个数(4^h-1)/3,当 h = 5 ,最大节点为341,当h=6,最大结点数为1365,所以最小深度应为6.
7、设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为( )个
设度为i的节点个数为ni,则该树总共有n个节点
n = n0+n1+n2.
n-1 = n1 + 2*n2
得 N0 =3,N1 =8 ,N2 =2.
堆 – 完全二叉树
1、堆在这里主要研究两个问题:一个是堆排序,一个是topk问题