微软100道算法题之001

下面开始第一题:

输入一颗二元查找树,将该二叉查找树转换成一个排序的双向链表。要求不能创建任何新的节点,只调整指针的方向:

1:二叉查找树的定义我在这里不多解释,无非是递归左<中<右:
2:一般解决链表类的问题的时候可以辅助的申明头节点指针和尾节点指针来辅助思考或者解答,和初中解三角形的中位线一样是万金油

首先是节点类型:在这里我没有附带数据域;
bin_search_tree_node
{
    bin_search_tree_node *left_c , *right_c;
};

然后是大的函数框架:返回的是一个双向链表,回忆一下,链表类型只要知道头指针就可以了,树类型只要知道根节点就可以了;

bin_search_tree_node * treeToDList(bin_search_tree_node *root);

3:和第二条一样,遇到链表想到辅助的头指针,遇到树就想到递归: 当然所有叶子节点的left_c == NULL right_c == NULL;

4:下面是这个题目解题思路和手稿:

对于叶子节点肯定是递归的出口:递归函数的设计注意如果在return 也就是出口改变的“参数”,返回值就会改变调用该层的“参数”

这个解释很绕口,心得,具体怎么样问老师吧(或者参考我的附件里面的代码):

这个题目我还是设置了2个全局变量和 2个局部变量:递归模型是这个样子的:

void fun(bin_search_tree *root)
{
    if(.....)  {     ............; break; }  这里是递归 的出口
    fun(root->left_c);
    fun(root->right_c);   //最后发现这个模型不是很好写代码,加上头尾节点指针,则不用设置两全局变量,而是4个局部变量;

    if(...) { 00000000) ; 修改指针指向; 晚上上传附件 ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源说明: 此份,是为微软等公司数据结构+算法面试100 ,之前60 的汇总。 总结整理了前第1 -第60 。特此并作此一份上传。以飨各位。:)。 此绝对值得你下载收藏。 ----------------------------- 网友yui评论,真是够多的了,从此,不用再看其它面试.... 一句话,请享用。 July、2010/11.12. ------------------------------------------------ 其它资源,下载地址: [最新整理公布][汇总II]微软等数据结构+算法面试100[第1-80] http://download.csdn.net/source/2846055 1.[最新答案V0.3版]微软等数据结构+算法面试100[第21-40答案] http://download.csdn.net/source/2832862 2.[第1-60汇总]微软等数据结构+算法面试100 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试100[前20]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试100[前25] http://download.csdn.net/source/2796735 5.[第二部分]精选微软等公司结构+算法面试100[前41-60]: http://download.csdn.net/source/2811703 6.[第一部分]精选微软等公司数据结构+算法经典面试100[1-40] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ ------------------------------------------------------ 各位,若对以上100任何一,或对已上传的任何一的答案, 有任何问,请把你的思路、想法,回复到此帖子上, 微软100系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值