搜狗的笔试,我选择的是研究类的试题,考的是数据结构+算法。
有2个填空题值得记录一下。
1. 由4个结点A,B,C,D组成的具有4个结点的不同的二叉树一共有多少棵?
首先考虑树形结构,树形结构不一样的话肯定是不同的二叉树。同样的树形结构,由于结点分布的不同,也是不同的二叉树。
因为,一共有14种不同的树形结构,每种结构有4!=24种不同的结点分布,所以共有不同的二叉树14*24=336棵。
2. 高度为8的AVL树最少有多少个结点?
利用递归的思想来解决这个问题。
设高度为h的AVL树的最少结点数位f(h)。
由AVL树的定义和结点最少的限制可以知道,高度为h的AVL树的子树必定一个是高度为h-1的具有最少结点的AVL树,另一个是高度为h-2的具有最少结点的AVL树。
于是,f(h) = f(h-1) + f(h-2) + 1 ( h >2) 。 易知f(1) = 1, f(2) = 2
根据递推公式可得f(8) = 54