网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机应届毕业生常见面试题目.pdf

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机应届毕业生常见面试题目

计算机应届毕业生常见面试题目汇总 1. 把二元查找树转换成排序的双向链表 题目 :输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能 创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16 。 分析:本题是微软的面试题。很多与树相关的题目都是用递归的思路来解决,本题也 不例外。二元查找树 BST 的一个重要特性便是如果按照中序方式对其进行遍历,结果是一个 有序的序列。 所以我们可以中序遍历整棵树。按照这个方式遍历树,比较小的结点总是最先被访问。 如果我们每访问一个结点,假设之前访问过的结点已经调整成一个排序好的双向链表,我们 再调整当前结点的指针,将其链接到链表的末尾。当所有结点都访问过之后,整棵树也就转 换成一个排序双向链表了。 源码: #include iostream using namespace std; typedef struct node { int data; struct node *left; struct node *right; }BSTNode; int InsertBST(BSTNode *bt, int k) { //作为叶子结点插入 BST 树 if(bt NULL) { bt=(BSTNode*)malloc(sizeof(BSTNode)); bt-data=k; bt-left=bt-right=NULL; return 1; } if(bt-data k) return 0; if(bt-datak) return InsertBST(bt-left, k); if(bt-datak) return InsertBST(bt-right, k); } 计算机应届毕业生常见面试题目汇总 void CreateBST(BSTNode *bt, int r[], int n) { int i; for(i=0; in; i++) { InsertBST(bt, r[i]); } } void ConvertToDLinkList(BSTNode *bt, BSTNode *visited) { BSTNode *cur=bt; if(cur!=NULL) { ConvertToDLinkList(cur-left, visited); cur-left=visited; if(visited!=NULL) visited-right=cur; visited=cur; ConvertToDLinkList(cur-right, visited); } } void DispDLinkList(BSTNode *bt) { while(bt!=NULL) { printf(%d , bt-data); bt=bt-right; } } int main() { int r[5]={3,88,9,42,16}; BSTNode *bt=NULL; CreateBST(bt, r, 5); BSTNode *h=NULL; ConvertToDLinkList(bt, h); //查找双链表的开始结点 while(h-left!

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档