微软100道算法题第一题------二叉排序树变成排序的双向链表
2015-11-12 16:38
295 查看
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
思路:
二叉排序树是右节点比跟大,左节点比根小的二叉树;
只要按顺序比二叉排序树输出就ok,当前和下一个建立双向连接,所以感觉这道题主要是顺序遍历二叉树;
先找到二叉树的最左节点,在走到它之前把它的父节点flag标志位设置成1;
表示左子树已经遍历过,如果flag == 2,则代表父节点子树全部遍历过,返回上级节点;
如果为0,则遍历左子树,
如果为1,则遍历右子树,
如果为2,则返回上一级节点,
递归遍历完成。
有更好的思路的在下面评论
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
思路:
二叉排序树是右节点比跟大,左节点比根小的二叉树;
只要按顺序比二叉排序树输出就ok,当前和下一个建立双向连接,所以感觉这道题主要是顺序遍历二叉树;
先找到二叉树的最左节点,在走到它之前把它的父节点flag标志位设置成1;
表示左子树已经遍历过,如果flag == 2,则代表父节点子树全部遍历过,返回上级节点;
如果为0,则遍历左子树,
如果为1,则遍历右子树,
如果为2,则返回上一级节点,
递归遍历完成。
有更好的思路的在下面评论
相关文章推荐
- 微软无线镭射简报鲨8000激光笔记本鼠标 - (2)
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- 微软镜像下载
- 微软公布2013年必应搜索十大首页美图
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 微软Word 2007数学插件 Microsoft Math 提供下载
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 巧用微软EWF来保护系统
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法