数据结构与算法-morris遍历

news2024/11/15 7:55:08

morris遍历的优点在于节省空间,因为不需要递归。
在这里插入图片描述


public class MorrisTraversal {
    public static void main(String[] args) {
        Node head = new Node(4);
        head.left = new Node(2);
        head.right = new Node(6);
        head.left.left = new Node(1);
        head.left.right = new Node(3);
        head.right.left = new Node(5);
        head.right.right = new Node(7);

        morris(head);
        morris2(head);
    }

    public static class Node{
        public int value;
        Node left;
        Node right;

        public Node(int data){
            this.value = data;
        }
    }

    public static void morris(Node head){
        if(head == null){
            return ;
        }

        Node cur = head;
        Node mostRight = null;
        boolean isRighNull = true;
        while(cur != null){
            System.out.print(cur.value+"  ");
            if(cur.left == null){ // 如果cur没有左孩子,cur向右移动
                cur = cur.right;
            }else{
                    mostRight = cur.left;
                    isRighNull = true;
                    while (mostRight.right != null) {
                        if(mostRight.right == cur){
                            isRighNull = false;
                            break;
                        }
                        mostRight = mostRight.right;
                    }

                    if (isRighNull) {
                        mostRight.right = cur;
                        cur = cur.left;
                    }else{
                        mostRight.right = null;
                        cur = cur.right;
                    }
            }
        }
        System.out.println();
    }

    public static void morris2(Node head){
        if(head == null){
            return ;
        }

        Node cur = head;
        Node mostRight = null;
        while(cur != null){
            System.out.print(cur.value+"  ");
            mostRight = cur.left;
            if(mostRight != null){// 如果cur没有左孩子,cur向右移动
                while (mostRight.right != null && mostRight.right != cur){
                    mostRight = mostRight.right;
                }
                if(mostRight.right == null){
                    mostRight.right = cur;
                    cur = cur.left;
                    continue;
                }else{
                    mostRight.right = null;
                }
            }
                cur = cur.right;
        }
        System.out.println();
    }
}

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

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

相关文章

实验二 局域网与互联网的连接

一、实验目的 1.掌握网络工程中网络拓扑设计与设备选型 2.掌握局域网与互联网的连接技术。 3.掌握访问控制规则的设置方法。 二、实验描述 某中学校园网网络初步规划如下:学生机房使用192.168.10.0/24网段;办公主机使用192.168.20.64/29网段&#x…

基于JAVA+SpringBoot+Vue的企业级工位管理系统

基于JAVASpringBootVue的企业级工位管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 …

C++之运算符

除法 / 结果的数据类型与除数 被除数 保持一致 (除数即分母 不能为0) 取模取余数 % (除数即分母 不能为0) a a 赋值运算符 逻辑运算符:非 与 或 非: 与:同真为真,其余为假 或&am…

大模型背后的秘密武器:向量数据库引领数据革命

在探讨为何向量数据库会成为大模型热潮中的基础设施之前,我们首先需要深入理解非结构化数据的本质、其迅猛增长的动因,以及这一趋势如何驱动了数据存储与检索技术的革新。随着人工智能(AI)技术的飞速发展,特别是在自然语言处理(NLP)、计算机视觉(CV)等领域的突破性进展…

.net 调用海康SDK实现NVR录像视频的下载

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,最近一直被测试拿捏,痛苦的挣扎中… 我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯…

简单计算机网络概念

1.浏览器过程 输入url,解析url 1.协议http、https的区别;HTTPS就是在HTTP与TCP之间增加了SSL/TSL安全传输层 2.格式:协议//主机:端口/路径; 3.HTTP版本:1.0和1.1 4.HTTP/1.1:1. 持久连接:为了…

Windows子系统Ubuntu安装MySQL及windows的navicate连接

Windows子系统Ubuntu安装MySQL及局域网连接 MySQL8.0之前 mysql8.0版本

证件照背景替换软件有哪些?证照之星怎么换背景色

在照相馆拍的证件照不满意,自行在家拍摄了证件照,却不会处理复杂的照片背景怎么办呢?其实可以使用专业软件来替换证件照背景。这篇文章就告诉大家证件照背景替换软件有哪些,证件照背景替换怎么弄。 一、证件照背景替换软件有哪些…

4千6历年高考英语试题大全ACCESS\EXCEL数据库

《历年高#考英语试题大全ACCESS数据库》搜集了大量的全#国各#地高#考英语模拟试题,每道题目均有相应的答案和解析;这种数据虽然没有《一站到底》类的数据结构(一个选项一个字段)那么好,但是通过技术人员还是可以很简单…

基于SSM的图书馆管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的图书馆管理系统7拥有两种角色:管理员和用户 管理员:图书管理、类型管理、借阅管理、续借管理、归还管理、罚金管理、留言管理等 学生用户:借…

前端速通面经八股系列(八)—— React篇(上)

React目录 一、组件基础1. React 事件机制2. React的事件和普通的HTML事件有什么不同?3. React 组件中怎么做事件代理?它的原理是什么?4. React 高阶组件、Render props、hooks 有什么区别,为什么要不断迭代5. 对React-Fiber的理解…

眼科市场格局固化,排名靠后的光正眼科还能逆袭吗?

眼科是A股的热门领域,也是医疗的黄金赛道。或许也正因为如此,这条赛道已经习惯了通过并购,利用资本杠杆跑马圈地。以最大规模的龙头爱尔眼科为首,并购是眼科的常规操作。 然而,真正观察赛道腰部及以下的公司&#xff…

十八、计算机视觉-canny边缘检测

文章目录 前言一、canny检测的流程1.高斯滤波(Gaussian Smoothing)2.梯度计算(Gradient Calculation)3.非极大值抑制(Non-maximum Suppression)4.双阈值检测(Double Thresholding)5.…

6、Flume安装

按照采集通道规划,需在hadoop102,hadoop104两台节点分别部署一个Flume。可参照以下步骤先在hadoop102安装,然后再进行分发。 1. Flume安装部署 1.1 安装地址 (1) Flume官网地址:Welcome to Apache Flume…

COCI2016-2017#1 Kralj

目录 COCI2016-2017#1 Kralj题目描述背景输入输出数据范围 题解解法 打赏 COCI2016-2017#1 Kralj 题目描述 背景 精灵王将 n n n个精灵编号为 1 , ⋯ , n 1 , \cdots , n 1,⋯,n,矮人王将 n n n个矮人围成一个圆环,从某个矮人开始顺时针编号为 1 , ⋯…

Mysql高级篇(中)——SQL性能分析

Mysql高级篇(中)—— SQL性能分析 一、(了解)MySQL Query Optimizer 的主要功能和原理二、(了解)MySQL 常见瓶颈三、关键字 EXPLAIN1、是什么2、基本语法3、EXPLAIN 执行信息详解(1&#xff09…

Windows--linux共享文件夹

1、如果共享文件夹设置在Windows上面 文件夹设置 个人家里电脑通常不设置用户名密码 linux端mount命令行 mount -t cifs -o usernamewade,vers3.0 //192.168.0.143/openvswitch-2.17.10 /root/windows

计算机专业选题推荐-基于python的岗位兼职招聘平台【python-爬虫-大数据定制】

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的岗位兼职招聘平…

我的第3个AI项目-Advanced RAG with Gemma, Weaviate, and LlamaIndex

目录 一、项目简介概述时间kaggle地址(代码和详细注解)主要工作和收获技术栈数据集结果 二、bug修复在 Kaggle 使用模型时需要先同意该模型的使用条款使用 GPU 时显存不足把 Weaviate 从V3升级到V4改动一:创建client改动二:判断某…

网络编程day02(字节序、TCP编程)

目录 【1】字节序 1》大小端转换 2》端口转换 3》IP地址转换 主机字节序转换为网络字节序 (小端序->大端序) 网络字节序转换为主机字节序(大端序->小端序) 【2】TCP编程 1》流程 2》函数接口 1> socket 2> …