数据结构 二叉树的存储结构_线程二叉树| 数据结构

数据结构 二叉树的存储结构

线程二叉树 (Threaded Binary Tree )

A binary tree can be represented by using array representation or linked list representation. When a binary tree is represented using linked list representation. If any node is not having a child we use a NULL pointer. These special pointers are threaded and the binary tree having such pointers is called a threaded binary tree. Thread in a binary tree is represented by a dotted line. In linked list representation of a binary tree, they are a number of a NULL pointer than actual pointers. This NULL pointer does not play any role except indicating there is no child. The threaded binary tree is proposed by A.J Perlis and C Thornton. There are three ways to thread a binary tree.

可以通过使用数组表示形式或链接列表表示形式来表示二叉树 。 当使用链接列表表示形式表示二叉树时。 如果任何节点没有子节点,我们将使用NULL指针。 这些特殊的指针是线程化的,具有此类指针的二进制树称为线程化的二进制树。 二叉树中的线程用虚线表示。 在二叉树的链表表示中,它们是空指针的数量,而不是实际指针的数量。 该NULL指针除指示没有子代外没有任何作用。 线程二叉树由AJ Perlis和C Thornton提出。 线程二叉树的方法有三种。

  1. In the in order traversal When The right NULL pointer of each leaf node can be replaced by a thread to the successor of that node then it is called a right thread, and the resultant tree called a right threaded tree or right threaded binary tree.

    在顺序遍历中,如果每个叶节点的Right NULL指针都可以由指向该节点后继节点的线程替换,则它称为右线程,而生成的树称为右线程树或右线程二叉树。

  2. When The left NULL pointer of each node can be replaced by a thread to the predecessor of that node under in order traversal it is called left thread and the resultant tree will call a left threaded tree.

    当每个节点的Left NULL指针可以按顺序遍历到该节点的前任对象的线程时,称为左线程,结果树将称为左线程树。

  3. In the in order traversal, the left and the right NULL pointer can be used to point to predecessor and successor of that node respectively. then the resultant tree is called a fully threaded tree.

    在顺序遍历中,可以使用左侧和右侧的NULL指针分别指向该节点的前任和后任。 那么生成的树称为全线程树。

In the threaded binary tree when there is only one thread is used then it is called as one way threaded tree and when both the threads are used then it is called the two way threaded tree. The pointer point to the root node when If there is no in-order predecessor or in-order successor.

在线程二叉树中,当仅使用一个线程时,则将其称为单向线程树,而当同时使用两个线程时,则将其称为双向线程树。 如果不存在有序的前任或有序的后任,则指针指向根节点。

Consider the following binary tree:

考虑以下二进制树:

Threaded Binary Tree 1

The in-order traversal of a given tree is D B H E A F C G. Right threaded binary tree for a given tree is shown below:

给定树的有序遍历为DBHEAFCG 。 给定树的右线程二叉树如下所示:

线程二叉树的优点 (Advantages of Thread Binary Tree)

Non-recursive pre-order, in-order and post-order traversal can be implemented without a stack.

无需堆栈即可实现非递归的有序遍历,有序遍历和后遍历遍历。

线程二叉树的缺点 (Disadvantages of Thread Binary Tree)

  1. Insertion and deletion operation becomes more difficult.

    插入和删除操作变得更加困难。

  2. Tree traversal algorithm becomes difficult.

    树遍历算法变得困难。

  3. Memory required to store a node increases. Each node has to store the information whether the links is normal links or threaded links.

    存储节点所需的内存增加。 无论链接是普通链接还是线程链接,每个节点都必须存储信息。

二叉树的线程类型 (Types of Threaded of Binary Tree)

There are three types of Threaded Binary Tree,

线程二叉树有三种类型,

1) Right Threaded Binary Tree

1)右线程二叉树

Right threaded binary tree for a given tree is shown:

显示给定树的右线程二叉树:

Right Threaded Binary Tree

2) Left Threaded Binary Tree

2)左线程二叉树

Left threaded binary tree for a given tree is shown:

显示给定树的左线程二叉树:

Left Threaded Binary Tree

3) Fully Threaded Binary Tree

3)全线程二叉树

Fully threaded binary tree for a given tree is shown:

显示给定树的全线程二叉树:

Fully Threaded Binary Tree

翻译自: https://www.includehelp.com/data-structure-tutorial/threaded-binary-tree.aspx

数据结构 二叉树的存储结构

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

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

相关文章

八、关于防水透湿整理

1,防水透湿整理加工技术的类型? 收集资料阶段 按照加工方式分类 防水透湿织物按照加工方式可分为高密织物、涂层织物和层压织物。不同加工方式所对应的织物各有特色。高密织物产生于 20 世纪 80 年代,它的密度可达到普通织物的 20 倍。在晴朗天气时,纱线孔隙大约为 10 μm…

求质数算法的N种境界 (N 10) zz

★引子 前天,俺在《俺的招聘经验[4]:通过笔试答题能看出啥?》一文,以"求质数"作为例子,介绍了一些考察应聘者的经验。由于本文没有政治敏感内容,顺便就转贴到俺在CSDN的镜像博客。   昨天&…

Python匿名函数---排序

一、列表的排序 nums [1,2,3,5,4,7,87,4,9,56,44,7,5] nums.sort()#默认从小到大排序 nums#结果为:[1, 2, 3, 4, 4, 5, 5, 7, 7, 9, 44, 56, 87]nums [1,2,3,5,4,7,87,4,9,56,44,7,5] nums.sort(reverseTrue)#从大到小排序 nums#结果为:[87, 56, 44, …

linux下怎么查kill某个进程,Linux下查询进程PS或者杀死进程kill的小技巧

假设我们要kill掉tomcat:那么我们首先需要tomcat的进程号pid:ps -aux | grep tomcat记下tomcat的PID后,执行:kill PID(tomcat)好了,就到这里....路人甲:小的们,灭了这个欺骗人民情感的家伙&…

opencv模板匹配

matchTemplate函数参数 模板匹配是通过模板在采集到的原图像进行滑动寻找与模板图像相似的目标。模板匹配不是基于直方图的方式,而是基于图像的灰度匹配。 6种匹配度量方法: 平方差匹配法CV_TM_SQDIFF 归一化平方差匹配法CV_TM_SQDIFF_NORMED 相关匹配…

Java程序设计4——集合类

1 JAVA集合概述 Java集合封装了一系列数据结构比如链表、二叉树、栈、队列等,然后提供了针对这些数据结构的一系列算法比如查找、排序、替换,使编程难度大大降低。(这句话有可能是非法…

python与tensorflow知识点截图集锦(持续囤积)

目录前言conda环境管理python语法【1】语言属性【2】代码缩进问题【3】input和output函数与print函数【4】关键字与简单数据类型与简单运算符【5】利用缩进体现逻辑关系【6】数据结构:列表与元组【7】数据结构:字典【8】数据结构:集合【8】基…

linux测试固态硬盘读写速度,在 Linux 上检测 IDE/SATA SSD 硬盘的传输速度

你知道你的硬盘在 Linux 下传输有多快吗?不打开电脑的机箱或者机柜,你知道它运行在 SATA I (150 MB/s) 、 SATA II (300 MB/s) 还是 SATA III (6.0Gb/s) 呢?你能够使用 hdparm 和 dd 命令来检测你的硬盘速度。它为各种硬盘的 ioctls 提供了命…

Opencv——批量处理同一文件夹下的图片(解决savedfilename = dest + filenames[i].substr(len)问题)

文章目录前言一、完整代码二、实现效果前言 第一份代码实现了批量修改同一文件夹下图片的尺寸,有其他需求时仅需修改处理部分的代码以及文件夹路径。 第二份代码实现了批量截取同一文件夹下每张图片的ROI区域作为结果保存,注意截取后按下enter键才会跳到…

处理文件、摄像头和图形用户界面

1、基本I/O脚本 1.1 读/写图像文件 import numpy import cv2#利用二维Numpy数组简单创建一个黑色的正方形图像 img numpy.zeros((3,3),dtypenumpy.uint8) img #结果为:array([[0, 0, 0],[0, 0, 0],[0, 0, 0]], dtypeuint8)img.shape#结果为:(3, 3)###…

linux桌面天气,Ubuntu 14.10中安装和配置天气应用

对于操作系统平台而言,有各种小插件功能方便用户日常应用。在Ubuntu桌面中提供天气信息的功能,可以使用Unity Dash和桌面应用来获得相关信息,比如Typhoon。但对于用户而言,可以提供快速查询天气状况和温度数据,并且只需…

linux批处理操作系统_批处理操作系统

linux批处理操作系统批处理操作系统 (Batch Processing Operating System) When we are working in an environment there is a restriction of making use of computer resources effectively and improvement in the programmers output. When we are working with tapes a l…

STL容器及其简单应用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)

目录前言【1】stack操作以及应用stack的几个核心接口利用stack完成进制转换【2】priority_queue操作以及应用priority_queue的几个核心接口利用priority_queue完成合并果子问题【3】vector操作以及应用vector的几个核心接口利用vector完成随机排序【4】deuqe(双向队列)操作以及…

已知一个掺杂了多个数字字符的中文名拼音,去掉所有数字字符之后,形式为“名”+空格+“姓”;并且名和姓的首字母大写,其他小写,要求输出姓名全拼,且全为小写。(后附详细样例说明)

已知一个掺杂了多个数字字符的中文名拼音,去掉所有数字字符之后,形式为“名”空格“姓”;并且名和姓的首字母大写,其他小写,要求输出姓名全拼,且全为小写。(后附详细样例说明) 【输入…

在一个风景秀丽的小镇,一天早上,有N名晨跑爱好者(编号1~N)沿着优雅的江边景观道朝同一方向进行晨跑

【问题描述】 在一个风景秀丽的小镇,一天早上,有N名晨跑爱好者(编号1~N)沿着优雅的江边景观道朝同一方向进行晨跑,第i名跑者从位置si处起跑,且其速度为Vi。换句话说,对所有的实数t≥0,在时刻t时第i名跑者的…

linux内核测试,Linux内核测试的生命周期

内核持续集成(CKI)项目旨在防止错误进入 Linux 内核。在 Linux 内核的持续集成测试 一文中,我介绍了 内核持续集成Continuous Kernel Integration(CKI)项目及其使命:改变内核开发人员和维护人员的工作方式。本文深入探讨了该项目的某些技术方面&#xff…

【视觉项目】【day3】8.22号实验记录(利用canny检测之后的来进行模板匹配)

【day3】8.22号实验记录(几乎没干正事的一天,利用canny检测之后的来进行模板匹配) 今天没搞代码,主要是问研究生学长工业摄像头的接法的,学长也不知道,明天问问老师。。。 晚上搞了一下canny之后的模板匹配…

linux dd 大文件下载,Linux dd+grep 大文件二分查找

Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。参数说明(dd --help)Usage: dd [OPERAND]...or: dd OPTIONCopy a file, converting and formatting according to th…

如何让没有安装网页中所需字体的用户也能得到一致的浏览效果【转】

今天给大家谈一个关于字体的话题,我们在做项目的过程中会遇到一些在psd中的字体在自己的电脑中没有安装,或者是一些特殊的文字,通常的做法是把它切成图片,但是如果这个站是多个语言的,那我们是不是把每个语言的都切一张图片呢&…

【视觉项目】【day4】8.24号实验记录(消除瓶子内部“边缘”)

思路分析以及代码 思路1:使用findContours函数,设置轮廓为最外部RETR_EXTERNAL,结果发现结果仍然是所有轮廓。 思路2:先二值化,然后进行闭操作,然后canny,得到的轮廓确实比之前少很多&#xff…