当前位置: 首页 > 知识库问答 >
问题:

线程二叉树

施季
2023-03-14

大家好,我应该编写ThreadedNode()类,但是我遇到了一些问题。

我理解,一个二叉树的线程二叉树是通过在顺序遍历中将每一个null左子级设置为节点的前导,在顺序遍历中将每一个null右子级设置为节点的后继来获得的。

但是,我的问题是从构造函数//线程(二叉树)开始的,当您被赋予根公共线程节点(BinaryNode根)

我知道它接收一个binaryNode,我必须使它成为一个线程树,但我如何创建新的线程树?

共有1个答案

长孙朝明
2023-03-14

创建线程二叉树的常用方法是使用假头。这使得单节点树更容易理解,构造函数也更直接。

因此,您的构造函数可能看起来像:

public class ThreadedNode {

    private BinaryNode head;

    public ThreadedNode(BinaryNode root) {

        head = new BinaryNode();
        root.makeThreaded();
        root.setRight(head);
        head.setRight(root);

    }
}

请记住,稍后您需要在插入、删除等中说明这个假头。

 类似资料:
  • 我需要从一个常规的二叉树构建一个双线程树,如果可能的话使用递归。这就是我们USIG的定义:二叉树的线程树是通过在顺序遍历中将每一个null左子设为节点的前导子,在顺序遍历中将每一个null右子设为节点的后继子而得到的。 我找不到一个解决方案,这里有几个类似的帖子,但没有解决方案。我只需要算法,它可以是任何语言的 这是构造函数,第二个是我需要做的: 我的最初方法是递归地调用一个helper方法,如下

  • 线索二叉树 二叉树的叶子节点会有一些空的指针,如果有n个节点则会有n+1个空指针域,将这些空指针域利用起来存在该二叉树为某一种遍历次序下的前驱节点和后继节点的二叉树成为线索二叉树。根据线索二叉树性质不同分为前序线索二叉树,中序线索二叉树,后续线索二叉树。 一个节点的前一个节点为前驱节点,一个节点的后一个节点为后继节点 核心思想 当线索化二叉树的时候left和right就分为两种情况 left指向左

  • 问题内容: 可以使用fork()函数复制多线程进程。如果是这样,那么所有线程都将完全相同,如果不是,为什么不这样做。如果无法通过fork完成复制,是否还有其他功能可以帮助我? 问题答案: 进行分叉后,子进程中只有一个线程正在运行。这是POSIX标准要求。

  • 问题内容: 我以前在应用程序中使用过线程,并且对线程的概念非常了解,但是最近在我的操作系统讲座中,我遇到了fork()。这类似于线程。 我用谷歌搜索了它们之间的区别,我知道: Fork只是一个看起来与旧流程或父流程完全相似的新流程,但它仍然是具有不同流程ID并拥有自己内存的不同流程。 线程是轻量级进程,具有较少的开销 但是,我仍然有一些疑问。 什么时候应该更喜欢fork()而不是线程? 如果我想以

  • 二叉树 二叉树采用二叉链表存储,要求根据给定的先序遍历序列和中序遍历序列建立二叉树,并输出后序遍历序列、结点总数、叶子数、度为1的结点数、度为2的结点数。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据的第一行输入结点数n(1≤n≤10),第二、三行各输入n个整数,分别表示二叉树的先序遍历序列和中序遍历序列。 输出格式: 对于每组测试,在一行上分别输出该二叉树的后序遍历序列,结点总数,叶子

  • 主要内容:什么是二叉排序树?,使用二叉排序树查找关键字,二叉排序树中插入关键字,二叉排序树中删除关键字,总结前几节介绍的都是有关静态 查找表的相关知识,从本节开始介绍另外一种查找表—— 动态查找表。 动态查找表中做查找操作时,若查找成功可以对其进行删除;如果查找失败,即表中无该关键字,可以将该关键字插入到表中。 动态查找表的表示方式有多种,本节介绍一种使用树结构表示动态查找表的实现方法—— 二叉排序树(又称为 “二叉查找树”)。 什么是二叉排序树? 二叉排序树要么是空 二叉树,要么具有如下特点: