- 1、本文档共114页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微软技术面试100题答案1,微软面试100题及答案,微软面试题及答案,c微软面试题及答案,技术面试问题及答案,面试问题及答案,公务员面试真题及答案,结构化面试试题及答案,php面试题及答案,java面试题大全带答案
微软技术面试100题第1-10题答案修正与优化1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14 / / / /4 8 12 16 转换成双向链表4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode{ int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node};
Sorehead:第一题:基本就是采用一次遍历即可,楼主采用的是递归方法。但有两个建议:1、函数里面最好不好使用全局变量,采用参数传递的方式可能更好。全局变量能少用就少用。2、if (NULL == pCurrent)这种方式我也不是很推荐。我知道采用这种方式的好处是一旦少写了一个等号,编译器会报错,NULL不是一个合法左值。其实我最开始写代码时也是这么写的,很长时间都觉得挺好。但这有个悖论,就是一个开发者能够想起来这么写的时候,这说明他知道这么是要做等值判断,自然也会知道该写==而不是=,想不起来的时候自然也就该犯错误还是犯错误,并不能起到原本初衷。代码写多了,会发现这么写真有点多此一举。
July关于第一题,我再多说点: 我们可以中序遍历整棵树。按照这个方式遍历树,比较小的结点先访问。如果我们每访问一个结点,假设之前访问过的结点已经调整成一个排序双向链表,我们再把调整当前结点的指针将其链接到链表的末尾。当所有结点都访问过之后,整棵树也就转换成一个排序双向链表了。
view plaincopy to clipboardprint?
// 遍历二元查找树 中序
void ergodicBSTree(BSTreeNode * pCurrent)
{
if (NULL == pCurrent)
{
return;
}
if (NULL != pCurrent-m_pLeft)
{
ergodicBSTree(pCurrent-m_pLeft);
}
// 节点接到链表尾部
convertToDoubleList(pCurrent);
// 右子树为空
if (NULL != pCurrent-m_pRight)
{
ergodicBSTree(pCurrent-m_pRight);
}
}
// 二叉树转换成list
void convertToDoubleList(BSTreeNode * pCurrent)
{
pCurrent-m_pLeft = pListIndex;
if (NULL != pListIndex)
{
pListIndex-m_pRight = pCurrent;
}
else
{
pHead = pCurrent;
}
pListIndex = pCurrent;
coutpCurrent-m_nValueendl;
}
或者网友何海涛所述:
view plaincopy to clipboardprint?
void ConvertNode(BSTreeNode* pNode, BSTreeNode* pLastNodeInList)
{
if(pNode == NULL)
return;
BSTreeNode *pCurrent = pNode;
// Convert the left sub-tree
if (pCurrent-m_pLeft != NULL)
ConvertNode(pCurrent-m_pLeft, pLastNodeInList);
// Put the current node into the double-linked list
您可能关注的文档
- 处方前研究.ppt
- 复变函数课件37解析函数与调和函数的关系.ppt
- 复合式地源热泵系统运行策略研究论文全文.doc
- 复旦大学医学遗传学课件case_control_TDT分析.ppt
- 外文翻译一些周期性的二阶线性微分方程解的方法 2.doc
- 外研版八年级下册英语课件M4U1.ppt
- 外研英语必修3模块综合检测(二).doc
- 外研英语必修3模块综合检测(四).doc
- 外研版高中英语选修6 Module5 Reading practice.ppt
- 外来车辆人员管理系统最新宣传资料.doc
- 2023年教师资格之中学教育学教育心理学练习题.docx
- 2023年教师资格之中学教育学教育心理学练习题附答案.docx
- 2023年教师资格之中学教育学教育心理学练习题和答案.docx
- 2023年教师资格之中学教育学教育心理学练习题附答案详解.docx
- 2023年教师资格之中学教育学教育心理学练习题附带答案.docx
- 2023年教师资格之中学教育学教育心理学练习题包括详细解答.docx
- 2023年教师资格之中学教育学教育心理学练习题库包含答案.docx
- 2023年教师资格之中学教育学教育心理学练习题库提供答案解析.docx
- 2023年教师资格之中学教育学教育心理学练习题库附有答案详解.docx
- 2023年教师资格之中学教育学教育心理学模拟题库和答案.docx
文档评论(0)