用分布式做的网站/建设网站需要多少钱

用分布式做的网站,建设网站需要多少钱,wordpress设置关站,大学生创新创业大赛ppt模板一、引入 遍历二叉树是按一定规则将二叉树结点排成线性序列,得到先序、中序或后序序列,本质是对非线性结构线性化,使结点(除首尾)在线性序列中有唯一前驱和后继;但以二叉链表作存储结构时,只能获…

一、引入


        遍历二叉树是按一定规则将二叉树结点排成线性序列,得到先序、中序或后序序列,本质是对非线性结构线性化,使结点(除首尾)在线性序列中有唯一前驱和后继;但以二叉链表作存储结构时,只能获取结点左右孩子信息,无法直接得任一序列中的前驱和后继信息,该信息需在遍历动态过程中获取,所以我们将引入线索二叉树来保存遍历动态过程中得到的前驱和后继信息。

二、线索二叉树的基本概念 


        试做如下规定:若结点有左子树,则其lchild域指示其左孩子,否则令 Ichild域指示其前驱;若结点有右子树,则其rchild 域指示其右孩子,否则令rchild域指示其后继。为了避免混淆,尚需改变结点结构,增加两个标志域,其结点形式如图所示。

其中:LTag=0,lchild指示结点的左孩子;=1时,lchild指示结点的前驱。

          RTag=0,rchild指示结点的右孩子;=1时,rchild指示结点的后继。

        这样我们就能得到二叉树的二叉线索类型定义如下:

//二叉树的二叉线索存储表示
typedef struct BiThrNode{TElemType data;struct BiThrNode *lchild,*rchild;    //左右孩子的指针int LTag,RTag;    //左右标志
}BiTheNode,*BiThrThree;

        以这种结点结构构成的二叉链表作为二叉树的存储结构,叫做线索链表,其中指向结点前驱和后继的指针,叫做线索。加上线索的二叉树称之为线索二叉树(Threaded Binary Tree)。对二叉树以某种次序遍历使其变为线索二叉树的过程叫做线索化
        例如下图中(a)所示为中序线索二叉树,与其对应的中序线索链表如图5.16(b)所示。其中实线为指针(指向左、右子树),虚线为线索(指向前驱和后继)。

三、线索二叉树的构造与遍历 


3.1、构造线索二叉树


         线索二叉树构造的实质是将二叉链表中的空指针改为指向前驱或后继的线索,而前驱或后继的信息只有在遍历时才能得到,因此线索化的过程即为在遍历的过程中修改空指针的过程。
        Tips:为了记下遍历过程中访问结点的先后关系,附设一个指针pre 始终指向刚刚访问过的结点,而指针p指向当前访问的结点,由此记录下遍历过程中访问结点的先后关系。

以结点p为根的子树中序线索化:

        首先我们来判断指针p,如果p非空,左子树递归线索化。如果p的左孩子为空,则给p加上左线索,将其LTag置为1,让p的左孩子指针指向prc (前驱);否则将p的LTag置为0。然后我们来看pre,如果pre的右孩子为空,则给pre加上右线索,将其RTag置为1,让pre的右孩子指针指向p(后继);否则将pre的RTag置为0。之后将pre指向刚访问过的结点p,即Pre=p。最后右子树递归线索化。

代码描述:

void InThreading(BiThrTree p){//pre是全局变量,初始化时其右孩子指针为空,便于在树的最左结点建立线索。if(p){InThreading(p->lchild);    //左子树递归线索化if(!p->lchild){    //p的左孩子为空p->LTag=1;    //给p加上左线索p->lchild=pre;    //p的左孩子指向pre前驱}else {p->LTag=0;    }if(!pre->rchild){    //pre的右孩子为空pre->RTag=1;    //给pre加上右线索pre->rchild=p;    //pre的右孩子指向p后继}else{pre->RTag=0;}pre=p;    //保持pre指向p的前驱InThreading(pre->rchild);    //右子树递归线索化}
}

3.2、遍历线索二叉树 


        由于有了结点的前驱和后继信息,线索二叉树的遍历和在指定次序下查找结点的前驱和后继算法都变得简单。因此,若需经常查找结点在所遍历线性序列中的前驱和后继,则采用线索链表作为存储结构。

        下面讨论在中序二叉树中如何查找结点的前驱与后继:
①查找p指针所指结点的前驱:

  • 若p->LTag为1,则p的左链指示其前驱;
  • 若p->LTag为0,则说明p有左子树,结点的前驱是遍历左子树时最后访问的一个结点(左子树中最右下的结点)。

②查找p指针所指结点的后继:

  • 若P->RTag为1,则p的右链指示其后继,以上文中图5.16所示的中序线索树为例来看,结点b的后继为结点 *
  • 若P->RTag为0,则说明p有右子树。根据中序遍历的规律可知,结点的后继应是遍历其右子树时访问的第一个结点,即右子树中最左下的结点。例如在找结点 * 的后继时,首先沿右指针找到其右子树的根结点 - ,然后顺其左指针往下直至其左标志为1的结点,即为结点 * 的后继,在图中是结点c。

        由于有了结点的前驱和后继的信息,线索二叉树的遍历操作无需设栈,避免了频繁的进栈、出栈,因此在时间和空间上都较遍历二叉树节省。如果遍历某种次序的线索二叉树,则只要从该次序下的根结点出发,反复查找其在该次序下的后继,直到叶子结点。所以我们就能按照下面的步骤来进行线索二叉树的遍历啦(以中序线索二叉树的遍历为例):

遍历步骤:

  1. 指针p指向根结点。
  2. p为非空树或遍历未结束时,执行以下操作:
    a、沿左孩子向下,到达最左下结点*p,它是中序的第一个结点;
    b、访问*p;
    c、沿右线索反复查找当前结点*p的后继结点并访问,直至右线索为0或者遍历结束;
    d、转向p的右子树。

代码描述:

void InOrderTraverse_Thr(BiThrTree T){//T指向头结点,头结点的左链lchild指向根结点。//中序遍历的非递归算法,对每个元素直接输出p=T->lchild;    //p指向根结点while(p!=T){    //空树或遍历结束时p==Twhile(p->Ltag==0){    p=p->lchild;    //沿左孩子向下cout<<p->data;    //访问其左子树的结点}while(p->RTag==1&&p->rchild!=T){p=p->rchild;cout<<p->data;    //沿右线索访问后继结点}p=p->rchild;    //转向p的右子树}
}

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

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

相关文章

汽车保养记录用什么软件记录,汽车维修记录查询系统,佳易王汽车保养维护服务记录查询管理系统操作教程

一、概述 本实例以佳易王汽车保养维护服务记录查询管理系统为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a;1、功能实用&#xff0c;操…

Python IP解析器 ip2region使用

说明&#xff1a;最近需要在python项目内使用IP定位所在城市的需求&#xff0c;没有采用向外部ISP服务商API请求获取信息的方案&#xff0c;则翻了翻&#xff0c;在搞Java时很多的方案&#xff0c;在Python端反而可选择范围很小。 # 示例查询 ips ["106.38.188.214"…

python开发订单查询功能(flask+orm bee)

1. 搭建python环境。 可以参考其它文档。 此处python使用 3.12 IDE随意&#xff0c;PyCharm 或 Eclipse PyDev也可以。 2. Flask 2.1 安装Flask pip install Flask 2.2 一个最简单的flask实例 创建一个工程&#xff0c; 新建一个 main.py文件&#xff0c; 输入以下内容…

哈尔滨服务器租用托管流程

哈尔滨服务器租用托管流程可分为三个阶段实施&#xff0c;具体操作如下&#xff1a; 一、前期准备阶段 业务需求评估 明确计算资源需求&#xff1a;CPU核心数/线程数、内存容量、存储类型(HDD/SSD/NVMe)及容量、带宽标准(独享/共享) 确定网络架构要求&#xff1a;多线接入、国际…

音频大语言模型可作为描述性语音质量评价器

论文《AUDIO LARGE LANGUAGE MODELS CAN BE DESCRIPTIVE SPEECH QUALITY EVALUATORS》学习 推动多模态代理从"能听"到"懂好坏"的进化 摘要&#xff1a; . 研究背景与问题 核心内容&#xff1a;现有音频大语言模型缺乏对输入语音质量的感知能力&#xff…

我在哪,要去哪

在直播间听到一首好听的歌《我在哪&#xff0c;要去哪》-汤倩。 遇见的事&#xff1a;21~24号抽调去招生。 感受到的情绪&#xff1a;公假吗&#xff1f;给工作量吗&#xff1f;月工作量不够扣钱吗&#xff1f;报销方便吗&#xff1f;有事情&#xff0c;从来不解决后顾&#x…

某快餐店用户市场数据挖掘与可视化

1、必要库的载入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加载并清洗数据 # 2.1 加载数据 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 数据清洗 # 2.2.1 检查缺失值 print(缺失值情况&#xff1a;) print(df.isn…

Easysearch 索引生命周期管理实战

如果你的使用场景是对时序型数据进行分析&#xff0c;可能你会更重视最新的数据&#xff0c;并且可能会定期对老旧的数据进行一些处理&#xff0c;比如减少副本数、forcemerge、 删除等。Easysearch 的索引生命周期管理功能&#xff0c;可以自动完成此类索引的管理任务。 创建…

Modbus通信协议基础知识总结

1. 数据类型与存储区分类 Modbus协议将数据分为四类存储区&#xff0c;通过存储区代号区分&#xff1a; 输出线圈&#xff08;0x&#xff09;&#xff1a;可读写&#xff0c;对应二进制开关量&#xff08;如继电器状态&#xff09;&#xff0c;地址范围000001-065536&#xff…

LeetCode 2614.对角线上的质数:遍历(质数判断)

【LetMeFly】2614.对角线上的质数&#xff1a;遍历(质数判断) 力扣题目链接&#xff1a;https://leetcode.cn/problems/prime-in-diagonal/ 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&…

linux 安全 xshell 使用

目录和文件 ls -l 查看目录和文件的权限的设置情况 加固方法 对于重要目录&#xff0c;建议执行如下类似操作 Chmod -R 750 /etc/rc.d/init.d/* 这样只有root可以读写和执行这个目录下的脚本 新建了一个用户Q 写入了一些信息 发现在root用户下可以进行文件打开 接下来用普通用…

自动驾驶背后的数学:特征提取中的线性变换与非线性激活

在上一篇博客「自动驾驶背后的数学&#xff1a;从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数中&#xff0c;我们初步探讨了自动驾驶技术中从传感器数据到控制指令的函数嵌套流程&#xff0c;其中提到了特征提取模块对传感器数据进行线性…

杨校老师课堂之编程入门与软件安装【图文笔记】

亲爱的同学们&#xff0c;热烈欢迎踏入青少年编程的奇妙世界&#xff01; 我是你们的授课老师杨校 &#xff0c;期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中&#xff0c;像手机里的各类 APP、电…

DeepSeek 3FS 与 JuiceFS:架构与特性比较

近期&#xff0c;DeepSeek 开源了其文件系统 Fire-Flyer File System (3FS)&#xff0c;使得文件系统这一有着 70 多年历时的“古老”的技术&#xff0c;又获得了各方的关注。在 AI 业务中&#xff0c;企业需要处理大量的文本、图像、视频等非结构化数据&#xff0c;还需要应对…

Coco AI 智能检索 Hugo Blog 集成指南

在此前的文章中&#xff0c;我们介绍了如何使用 Coco Server 连接 Notion&#xff0c;实现智能内容检索。本次&#xff0c;我们将进一步探索如何在 Coco Server 最新版本 中集成 Hugo Site&#xff0c;以便对 Hugo 站点 进行高效检索。 Coco Server 部署方式 要在本地或服务器…

Mobile-Agent-V:通过视频引导的多智体协作学习移动设备操作

25年2月来自北京交大和阿里巴巴公司的论文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移动设备使用量的快速增长&#xff0c;迫切需要改进自动化以实现无缝任务管理。然而&#xff0c;因缺乏操作知识&#xff0…

电鱼智能EFISH-RK3576-SBC工控板已适配Android 14系统

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系统&#xff0c;为了满足更多客户的需求&#xff0c;电鱼智能近日又为其成功适配了Android 14系统——硬件性能卓越的核心板与Android 14的深度组合&#xff0c;将为用户带来更加流畅、开放、智能的使用体验。 一、高性能处理器…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …

无线头戴式摄像头系统:无需标记点摄像头智能捕捉人脸表情

AH-T无线头戴式摄像头系统是一款可以精准捕捉人脸面部细微表情的设备&#xff0c;基于单目无标记点摄像头智能识别算法&#xff0c;无需在脸上粘贴标记点即可实现真人细微脸部表情的精准捕捉&#xff0c;采用头盔&#xff0c;面捕摄像头一体式人性化设计&#xff0c;可以让使用…

Tailwind CSS 中的 spacing 详解

&#x1f50d; Tailwind CSS 中的 spacing 详解 spacing&#xff08;间距&#xff09;是 Tailwind CSS 里的一个核心概念&#xff0c;它主要用于控制 padding&#xff08;内边距&#xff09;、margin&#xff08;外边距&#xff09;、width&#xff08;宽度&#xff09;、heig…