热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

剑指offer算法题026:二叉搜索树与双向链表

小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现&

小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offer上的算法题,以及小编总结的答案。下面是第026道剑指offer算法题:

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

分析

典型的二叉树中序遍


/**
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}
*/

//利用非递归版本的只需遍历
import java.util.Stack;
public class Solution{public TreeNode Convert(TreeNode root) {if(root&#61;&#61;null) return null;TreeNode head &#61; null;TreeNode tail &#61; null;Stack<TreeNode> stack &#61; new Stack<>();TreeNode node &#61; root;while(node!&#61;null || !stack.isEmpty()){while(node!&#61;null){stack.push(node);node &#61; node.left;}TreeNode tmp &#61; stack.pop();if(head&#61;&#61;null){head &#61; tmp;tail &#61; tmp;}else{tail.right &#61; tmp;tmp.left &#61; tail;tail &#61; tmp;}node &#61; tmp.right;}return head;}
}// 递归解法
public class Solution {TreeNode head &#61; null;TreeNode tail &#61; null;public TreeNode Convert(TreeNode pRootOfTree) {midTraverse(pRootOfTree);return head;}private void midTraverse(TreeNode root){if(root&#61;&#61;null) return;midTraverse(root.left);if(head&#61;&#61;null){head &#61; root;tail &#61; root;}else{tail.right &#61; root;root.left &#61; tail;tail &#61; root;}midTraverse(root.right);}
}

注&#xff1a;在牛客网上刷剑指offer题目时&#xff0c;最好使用牛客网自带的编辑器&#xff0c;不建议使用IDE的代码补全功能&#xff0c;因为实际面试中是在A4纸上手写代码&#xff0c;是没有代码提示的。

有些题你看懂了&#xff0c;不代表你会了。看答案前或者看完答案第二天&#xff0c;动手在A4纸上写写代码就知道自己是不是真的会了。
每天分享一道剑指offer算法题目&#xff0c;并且有最适合面试手撕算法环节的解法分享&#xff0c;欢迎大家关注我们~

其他文章

1. 学习笔记和学习资料汇总&#xff1a;前端 &#43; 后端 &#43; java &#43; 大数据 &#43; python &#43; 100多实战项目 &#43; C&#43;&#43;

2. 我的秋招经历总结&#xff1a;一站式秋招规划

3. 零基础学爬虫

4. 零基础C&#43;&#43;学习总结

欢迎关注个人公众号【菜鸟名企梦】&#xff0c;公众号专注&#xff1a;互联网求职面经javapython爬虫大数据等技术分享&#xff1a;

公众号菜鸟名企梦后台发送“csdn”即可免费领取【csdn】和【百度文库】下载服务&#xff1b;

公众号菜鸟名企梦后台发送“资料”:即可领取5T精品学习资料java面试考点java面经总结&#xff0c;以及几十个java、大数据项目&#xff0c;资料很全&#xff0c;你想找的几乎都有

扫码关注&#xff0c;及时获取更多精彩内容。&#xff08;博主985、A&#43;学科硕士&#xff0c;今日头条大数据工程师&#xff09;


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
author-avatar
栋逼逼丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有