1. 递归在面试题中非常常见。我所遇到的企业面试题中,几乎所有与树相关的面试题都需要用递归来解决,除了树之外,还有很大一部分其他类型的题目需要用递归来解。大致题目如下:
(1)二叉树的前中后序遍历
(2)二叉树最小深度
(3)判读树是否为平衡二叉树
……
2. 递归思维,下面这篇博客介绍的非常浅显易懂。
3. 递归方法需要重点注意的地方,很多人都强调过,但是很多人始终没有意识到这些注意点的重要性,一定要提高下面的意识,必须刻在骨子里:
(1)必须建立递归的模型。
(2)绝对不要陷入过程调用这样的细节中(千万注意),如果还是不能提高意识,那么一定要多练习二叉树相关的面试题,建立递归思维的感觉。
(3)递归的出口设置非常简单,但是对于递归理解不深的人来说,总会想通过一步一步的调用,来分析出来递归的最终出口,其实大可不必。
4. 高频面试题:两个有序单链表的合并
Node* Merge(Node *head1, Node *head2)
{
Node *head = NULL;
if(head1 == NULL)
{
return head2;
}
if(head2 == NULL)
{
return head1;
}
if(head1->data < head2->data)
{
head = head1;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2;
head->next = MergeRecursive(head1,head2->next);
}
return head;
}