《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
样例
树的中序遍历:1 2 3 4 5 6 7 ,转换后双向链表的遍历:1 2 3 4 5 6 7
java代码
/*** @Description:搜索二叉树转换为双向链表* @Author: lizhouwei* @CreateDate: 2018/4/7 10:45* @Modify by:* @ModifyDate:*/
public class Chapter2_15 {public DoubleNode treeToDubleNode(Tree tree) {//用队列存放将树的中序遍历Queue<Tree> trees = new LinkedList<Tree>();//中序遍历recInOrder(tree, trees);//构造双向链表tree = trees.poll();DoubleNode head = new DoubleNode(tree.vlaue);DoubleNode pre = head;DoubleNode cur = null;while (!trees.isEmpty()) {tree = trees.poll();cur = new DoubleNode(tree.vlaue);pre.next = cur;cur.pre = pre;pre = cur;}return head;}public void recInOrder(Tree tree, Queue<Tree> trees) {if (tree == null) {return;}recInOrder(tree.left, trees);trees.offer(tree);recInOrder(tree.right, trees);}//打印树public void recInOrder(Tree tree) {if (tree == null) {return;}recInOrder(tree.left);System.out.print(tree.vlaue + " ");recInOrder(tree.right);}//测试public static void main(String[] args) {Chapter2_15 chapter = new Chapter2_15();Tree root = new Tree(4);root.left = new Tree(2);root.right = new Tree(6);root.left.left = new Tree(1);root.left.right = new Tree(3);root.right.left = new Tree(5);root.right.right = new Tree(7);chapter.recInOrder(root);DoubleNode head = chapter.treeToDubleNode(root);Link.printDLink(head);}
}class Tree {public int vlaue;public Tree left;public Tree right;public Tree(int vlaue) {this.vlaue = vlaue;}}
转载于:https://www.cnblogs.com/lizhouwei/p/8732666.html
《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表相关推荐
- 程序员代码面试指南第二版 4.猫狗队列
welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...
- 《程序员代码面试指南第二版》Python实现(个人读书笔记)
说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...
- 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档
前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...
- 《程序员代码面试指南》第二章 链表问题 反转部分单向链表
题目 给一个单向链表和开始和结束的位置,将这两位置区间链表进行反转 java代码 /*** @Description:反转部分单向链表* @Author: lizhouwei* @CreateDate ...
- [读书笔记]《程序员代码面试指南》
栈和队列: 1.设计一个有getMin功能的栈 题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O( ...
- 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体
准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...
- 《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表
样例 998 998 998 999 999 999 1000 1000 1000 删除后为998 999 1000 java代码 /*** @Description:删除无序链表中值重复的链表* @ ...
- 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...
题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html
最新文章
- Python中time模块详解
- vue 请求多个api_Vue 创建多人共享博客
- 【Tools】Win10系统搭建匿名FTP服务器详解
- CRM 客户关系管理
- 基于MTD的NAND驱动开发(二)
- 【操作系统复习】操作系统的特征
- VC限制只能输入常规数字的CEdit控件
- MFC初探 —— 双击Picture Control具体位置放大图片
- 多线程的那点儿事(之多线程调试)
- WINDOWS资源编译器出错信息
- ubuntu 1604 安装 rabbitvcs
- JSP+JavaBean实现简单计算器
- 虫虫 HTML5::初学者使用 Application Cache 指南
- ASP.Net Core数据加密
- 笔记本电脑计计算机硬盘分区,笔记本电脑如何分区,手把手教你笔记本电脑如何分盘...
- pythonfor循环文件写入失败_Python:使用for循环写入文件
- Java打印菱形与空心菱形
- 2.04 标志寄存器
- 苹果出现长方形透明框_衢州a4亚克力框
- 图(graph)的基本知识
热门文章
- Android 开发技能图谱
- Android Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE解决办法
- 随机验证码。 * 随机生成十组六位字符组成的验证码。 * 验证码由大小写字母、数字字符组成。
- 简单了解Vue的异步请求,axios-0.18.0.js插件实现异步
- kotlin学习笔记——委托属性
- Scala 读取文件
- js事件之event.preventDefault()与event.stopPropagation()用法区别
- MYSQL常用函数以及分组操作
- 用反射写的取属性值和设置属性值得方法
- 信息化基础建设 开发框架