当前位置: 首页 > news >正文

链表六:二叉搜索树与双向链表

/**
 * 题目:二叉搜索树与双向链表
 * 描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
 * 方案:在中序遍历中添加前驱结点
 * */

public class Six {

    /**
     * 前序遍历
     * */
    public static void two(BinaryTreeNode node) {
        if (node == null) {
            return;
        }
        System.out.println(node.var);
        one(node.left);
        one(node.right);
    }
    /**
     * 中序遍历,使用如下方法在牛客网运行得不到结果
     * */

BinaryTreeNode head = null;//用来记录
    BinaryTreeNode realhead = null;
@SuppressWarnings("unused")
    public static void one(BinaryTreeNode node) {
       if (node == null) {
            return;
        }
        one(node.left);
        if(head == null) {
            head = node;
            realhead = node;
        }else {
            head.right = node;
            node.left = head;
            head = node;
        }
        one(node.right);
    
    }
    /**
     * 后序遍历
     * */
    public static void three(BinaryTreeNode node) {
        if (node == null) {
            return;
        }
        one(node.left);
        one(node.right);
        System.out.println(node.var);
    }

    public static void main(String[] args) {
        BinaryTreeNode nodeRoot = new BinaryTreeNode();
        nodeRoot.var = 10;
        BinaryTreeNode nodeOne = new BinaryTreeNode();
        nodeOne.var = 6;
        BinaryTreeNode nodeTwo = new BinaryTreeNode();
        nodeTwo.var = 4;
        BinaryTreeNode nodeThree = new BinaryTreeNode();
        nodeThree.var = 8;
        BinaryTreeNode nodefour = new BinaryTreeNode();
        nodefour.var = 14;
        BinaryTreeNode nodeFive = new BinaryTreeNode();
        nodeFive.var = 12;
        BinaryTreeNode nodeSix = new BinaryTreeNode();
        nodeSix.var = 16;
        nodeRoot.left = nodeOne;
        nodeRoot.right = nodefour;
        nodeOne.left = nodeTwo;
        nodeOne.right = nodeThree;
        nodefour.left = nodeFive;
        nodefour.right = nodeSix;
        
        one(nodeRoot);
    }
    static class BinaryTreeNode{    
        int var;
        BinaryTreeNode left;
        BinaryTreeNode right;
    }
}

 

BinaryTreeNode pre;//在这个方法里面表示当前节点的前一个节点
BinaryTreeNode head; //头结点;
public BinaryTreeNode find(BinaryTreeNode node ){
  if(node == null) return;
  find(node.left);
  node.left = pre;
  if(pre != null )  
      pre.right = node;
      pre = node;
   if(head == null ) head = node; 
  find(node.right);
  return head;
}

  

  

 

转载于:https://www.cnblogs.com/ZeGod/p/9969363.html

相关文章:

  • 新一代海量数据架构分析:NoHadoop
  • chapter1.3、JS的分支语法
  • 企业邮件系统多域通讯录共享方案
  • 取证分析:在通信过程中不关心目标的子网掩码
  • 系统维护和tcp连接
  • winform 如何控制输入法
  • DoS***_详解(转载)
  • 自定义序列化技术2:变长数组的实现
  • 2,8,10,16进制转换
  • Hadoop:Hadoop的常见启动错误(有新问题会持续更新)
  • loj 1030概率dp
  • IoT:利尔达的半壁江山
  • 64位 windows10,安装配置MYSQL8.0.13
  • webservice—验证磨刀不误砍柴工的真理
  • linux ubuntu 网卡配置---固定IP
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • android图片蒙层
  • angular组件开发
  • const let
  • django开发-定时任务的使用
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • HTTP中GET与POST的区别 99%的错误认识
  • Idea+maven+scala构建包并在spark on yarn 运行
  • iOS 系统授权开发
  • javascript 哈希表
  • Java的Interrupt与线程中断
  • SQLServer之索引简介
  • Vue 2.3、2.4 知识点小结
  • Vue ES6 Jade Scss Webpack Gulp
  • Yii源码解读-服务定位器(Service Locator)
  • 一道闭包题引发的思考
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #QT(TCP网络编程-服务端)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (JS基础)String 类型
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (论文阅读11/100)Fast R-CNN
  • (十) 初识 Docker file
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (算法)Travel Information Center
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)Linux网络编程入门
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Core中的去虚
  • .NET NPOI导出Excel详解
  • .NET Reactor简单使用教程
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .php结尾的域名,【php】php正则截取url中域名后的内容