【剑指offer】面试题36:二叉搜索树与双向链表(java)

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

代码:

package offer;
class BineryTreeNode
{
    int val;
    BineryTreeNode left = null;
    BineryTreeNode right = null;
    BineryTreeNode(int val)
    {
        this.val = val;
    }
}
public class ti36 {
     private static BineryTreeNode pre = null; //保存当前节点的前一个节点
        private static BineryTreeNode head = null;//保存链表的头结点
        public static BineryTreeNode Convert(BineryTreeNode pRootOfTree) {
            if(pRootOfTree==null) return null;
            inOrder(pRootOfTree);
            return head;
        }
        private static void inOrder(BineryTreeNode node) {
            if (node == null) return;
            System.out.println(node.val);
            inOrder(node.left);
            node.left = pre;
            if (pre != null)  pre.right = node;
            pre = node;
            if (head == null) head = node;
            inOrder(node.right);
        }
    public static void main(String[] args)
    {
        /*BineryTreeNode a = new BineryTreeNode(10);
        BineryTreeNode b = new BineryTreeNode(6);
        BineryTreeNode c = new BineryTreeNode(14);
        BineryTreeNode d = new BineryTreeNode(4);
        BineryTreeNode e = new BineryTreeNode(8);
        BineryTreeNode f = new BineryTreeNode(12);
        BineryTreeNode g = new BineryTreeNode(16);
        a.left = b;
        a.right = c;
        b.left = d;
        b.right = e;
        c.left = f;
        c.right = g;*/
        BineryTreeNode a = new BineryTreeNode(4);
        BineryTreeNode b = new BineryTreeNode(2);
        BineryTreeNode c = new BineryTreeNode(5);
        BineryTreeNode d = new BineryTreeNode(1);
        BineryTreeNode e = new BineryTreeNode(3);
        a.left = b;
        a.right = c;
        b.left = d;
        b.right = e;
        BineryTreeNode result = Convert(a);
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科学难题的形成

来源:肖建华科学网博客传统上,把科学理论分为两类:唯象性科学理论和哲学性科学理论。大致而言,工程科学是以具体现象类来划分学科,此类学科的理论一般称为唯象性理论。而把各学科的共性特征抽象出来作为研究对象而建立…

冯·诺依曼计算机特点

冯诺依曼计算机特点 冯诺依曼,20世纪最重要的数学家之一。在现代计算机、博弈论、核武器和生化武器等众多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。 一、冯诺依曼计算机结构(以运算器为中心&…

计算机操作系统——经典进程的同步问题

计算机操作系统——信号量机制与经典进程的同步问题 信号量机制 随着发展,信号量从整型信号量经记录型信号量,进而发展为“信号量集”机制。 一般来说,信号量的值与相应的资源的使用情况有关。 信号量的值仅由P、V操作改变。 信号量的初值…

【剑指offer】面试题39:数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 代码: class Solution { public int majorityElement(in…

2020年度全球人工智能十大事件

该文章内容转载自战略前沿技术当前,新一代人工智能技术在全球蓬勃兴起,迅猛发展,与大数据、区块链、5G等新技术相互融合、相互因应,为经济社会发展尤其是数字经济发展注入新动能,正在深刻改变社会生产生活方式。与此同…

一头扎进sql之多表操作

一、多表查询时NULL值处理 要求返回比"allen"工资低的所有员工select a.ename,a.conn from emp a where a.conn < (select b.conn from emp b where b.ename allen) ; 正确的写法应该是select a.ename,a.conn from emp a where coalesce(a.conn,0) < (se…

当贝叶斯,奥卡姆和香农一起来定义机器学习

来源&#xff1a;数学中国【导读】当贝叶斯、奥卡姆和香农一起给机器学习下定义&#xff0c;将统计学、信息理论和自然哲学的一些核心概念结合起来&#xff0c;我们便会会发现&#xff0c;可以对监督机器学习的基本限制和目标进行深刻而简洁的描述。令人有点惊讶的是&#xff0…

eclipse中下载spring-tool-suite插件遇到的问题

eclipse中下载spring-tool-suite插件遇到的问题 我的eclipse的版本4.7.0&#xff0c;接下来以下载我的eclipse的对应STS版本3.8.4为例&#xff0c;讲一下遇到的问题。不同版本的eclipse对应不同的spring-tool-suite&#xff0c;具体的版本对应可以去其他的博客中寻找&#xff…

python - 内置函数

enumerate 将一个可迭代/可迭代对象变成enumerate类型 利用for循环可以对enumerate类型获得索引和值 1 lis (星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期七) 2 ret enumerate(lis, 1) # enumerate 可以接受第二个参数&#xff0c; 用于指定索引起始值 3 4 fo…

【剑指offer】面试题40:最小的k个数(java)

输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。 示例 1&#xff1a; 输入&#xff1a;arr [3,2,1], k 2 输出&#xff1a;[1,2] 或者 [2,1] 示例 2&#xff1a; 输入…

MicroPython (一)点亮我的Led

工具 &#xff1a; puttyF429Discovery 开发板Notepad注意&#xff1a;不知道为什么 其他的终端工具有问题&#xff0c;推荐 putty 基本没有发现问题 putty 实时调试 使用putty 打开USB 虚拟串口&#xff0c;我们打开可以使用help()方法寻求帮助输入help()如下所示 help() Welc…

2021年,AI有潜力改善农业的十种路径

来源&#xff1a;Forbes作者&#xff1a;Louis Columbus编译&#xff1a;科技行者普华永道指出&#xff0c;基于物联网的农业&#xff08;IoTAg&#xff09;监控已经成为联网智能农业领域发展最快的技术领域&#xff0c;市场总额到2025年预计将增长至45亿美元。根据BI Intellig…

计算机组成原理——总线系统总结

计算机组成原理——总线系统总结 一、总线的概念&#xff1a; 总线是构成计算机系统放入互联机构&#xff0c;是多个系统功能部件之间进行数据传送的公共通路。借助于总线连接&#xff0c;计算机在各个系统功能部件之间实现地址、数据和控制信息的交换&#xff0c;并在争用资…

【剑指offer】面试题42:连续子数组的最大和(java)

输入一个整型数组&#xff0c;数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6。 提示…

科学家打造全套人工神经系统 帮助瘫痪病人重新控制身体

Photo: Nathaniel Welch来源&#xff1a; IEEE电气电子工程师Motion Restored: Luke Tynan, who was paralyzed in 2017 by a spinal cord injury, demonstrates the wearable system that enables him to control his arm and hand. Sensors on the arm register his intentio…

存储器容量扩展——位扩展、字扩展

存储器&#xff08;二&#xff09;——存储容量扩展 前言&#xff1a;&#xff08;基本概念&#xff09; 存储空间&#xff1a;CPU决定存储器&#xff1a;用户需求决定&#xff08;4G&#xff0c;8G&#xff09;&#xff08;8G的存储器1各芯片能否完成用户需求&#xff1f;如…

海明码构造及纠错

计算机组成原理——海明码的构造及纠错 海明码&#xff08;又称为汉明码&#xff09;是具有一位纠错能力的编码。 信息位&#xff1a;发送用户端想要发送的信息序列&#xff0c;彼此独立&#xff0c;互不相关&#xff0c;最终交给接收端。 检测位&#xff1a;为了使信息码元产…

【剑指offer】面试题43:1~n整数中1出现的次数

输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现了5次。 示例 1&#xff1a; 输入&#xff1a;n 12 输出&#xff1a;5 …

潭州Java中级班(day_05)

1.掌握数字的使用2.掌握数字的声明以及内存分配3.通过数字的简单范例加深对数字的操作原理4.掌握多维数组的定义和使用 数组 数组是一组相关变量的集合&#xff0c;一个数组实际上就是一连串的变量一维数组 二位数组 int i[100] 表示一个伪代码&#xff0c;只是代表含义 一维数…

机器学习对抗攻击是一颗“定时炸弹”

来源 | AI前线作者 | Ben Dickson译者 | Sambodhi策划 | 刘燕随着机器学习的迅速普及&#xff0c;科技界必须制定一份保证人工智能系统免遭对抗攻击的路线图。否则&#xff0c;对抗机器学习将会是一场灾难。如果你一直在关注有关人工智能的新闻&#xff0c;你可能已经听说过或看…