样例

树的中序遍历: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

《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表相关推荐

  1. 程序员代码面试指南第二版 4.猫狗队列

    welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...

  2. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  3. 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档

    前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

  4. 《程序员代码面试指南》第二章 链表问题 反转部分单向链表

    题目 给一个单向链表和开始和结束的位置,将这两位置区间链表进行反转 java代码 /*** @Description:反转部分单向链表* @Author: lizhouwei* @CreateDate ...

  5. [读书笔记]《程序员代码面试指南》

    栈和队列: 1.设计一个有getMin功能的栈 题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O( ...

  6. 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体

    准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...

  7. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...

  8. 《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表

    样例 998 998 998 999 999 999 1000 1000 1000 删除后为998 999 1000 java代码 /*** @Description:删除无序链表中值重复的链表* @ ...

  9. 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...

    题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html

最新文章

  1. Python中time模块详解
  2. vue 请求多个api_Vue 创建多人共享博客
  3. 【Tools】Win10系统搭建匿名FTP服务器详解
  4. CRM 客户关系管理
  5. 基于MTD的NAND驱动开发(二)
  6. 【操作系统复习】操作系统的特征
  7. VC限制只能输入常规数字的CEdit控件
  8. MFC初探 —— 双击Picture Control具体位置放大图片
  9. 多线程的那点儿事(之多线程调试)
  10. WINDOWS资源编译器出错信息
  11. ubuntu 1604 安装 rabbitvcs
  12. JSP+JavaBean实现简单计算器
  13. 虫虫 HTML5::初学者使用 Application Cache 指南
  14. ASP.Net Core数据加密
  15. 笔记本电脑计计算机硬盘分区,笔记本电脑如何分区,手把手教你笔记本电脑如何分盘...
  16. pythonfor循环文件写入失败_Python:使用for循环写入文件
  17. Java打印菱形与空心菱形
  18. 2.04 标志寄存器
  19. 苹果出现长方形透明框_衢州a4亚克力框
  20. 图(graph)的基本知识

热门文章

  1. Android 开发技能图谱
  2. Android Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE解决办法
  3. 随机验证码。 * 随机生成十组六位字符组成的验证码。 * 验证码由大小写字母、数字字符组成。
  4. 简单了解Vue的异步请求,axios-0.18.0.js插件实现异步
  5. kotlin学习笔记——委托属性
  6. Scala 读取文件
  7. js事件之event.preventDefault()与event.stopPropagation()用法区别
  8. MYSQL常用函数以及分组操作
  9. 用反射写的取属性值和设置属性值得方法
  10. 信息化基础建设 开发框架