剑指offer-二叉搜索树与双向链表
2015-08-17 15:10
211 查看
题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。空间复杂度为O(1).
最笨的方法就是中序遍历放在一个数组或链表中,再次遍历串联起来。但是要求空间复杂度为O(1),就没办法这么做了,这时候可以参考这个解法:/article/10984903.html判断一个树是不是一颗二叉搜索树,可以模仿最后的那个方法。
本题跟书上的解法不一样,感觉这个稍微要简洁好理解,不过都是中序遍历的模型。
最后的head就是转化后链表的表头。还是那样的总结,在树这种数据结构上,很多模板都是可以套用的,比如做过上面那个题,下面那个就很容易改造出来了。对比一下会发现,代码真的及其相似。树的很多工具类方法,比如树的层次遍历,求树的高度等等问题,都可以熟记,然后改造。
最笨的方法就是中序遍历放在一个数组或链表中,再次遍历串联起来。但是要求空间复杂度为O(1),就没办法这么做了,这时候可以参考这个解法:/article/10984903.html判断一个树是不是一颗二叉搜索树,可以模仿最后的那个方法。
本题跟书上的解法不一样,感觉这个稍微要简洁好理解,不过都是中序遍历的模型。
private TreeNode pre = null; private static TreeNode head = null; public void convert(TreeNode root) { if (root == null) return; convert(root.left); if (pre != null) { pre.right = root; root.left = pre; } else { head = root; } pre = root; convert(root.right); }
最后的head就是转化后链表的表头。还是那样的总结,在树这种数据结构上,很多模板都是可以套用的,比如做过上面那个题,下面那个就很容易改造出来了。对比一下会发现,代码真的及其相似。树的很多工具类方法,比如树的层次遍历,求树的高度等等问题,都可以熟记,然后改造。
相关文章推荐
- JS,Jquery获取各种屏幕的宽度和高度
- js阿拉伯数字转中文大写 方法重多
- Caffe源码(八):concat_layer 分析
- css浮雕效果
- bootstrap单击导航条下的li后,自动收回
- jquery 插件开发基础知识
- Knockout.js Style绑定
- json 转义
- 解决This function or variable may be unsafe方法
- jQuery Ajax 实例 全解析
- Knockout.js CSS绑定
- 因一段JavaScript代码引发的闲扯
- Javascript 实现回到顶部效果
- js下拉选择框与输入框联动实现添加选中值到输入框的方法
- 【jQuery】 jQuery上下飘动效果
- HTML a 标签文本内容超出使用...表示
- Knockout.js Text绑定
- JQuery放大镜效果
- AngularJs的表单验证
- 使用jQuery+css实现选项卡切换功能