首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何编写addToRightMostChildAsLeftChild(节点a,节点b)的代码?

如何编写addToRightMostChildAsLeftChild(节点a,节点b)的代码?
EN

Stack Overflow用户
提问于 2019-04-14 04:57:30
回答 1查看 32关注 0票数 0

假设上面的方法有两个参数a and b

  • a:表示需要遍历的树的根节点,直到得到正确的节点为止。
  • b:表示要作为左子节点添加到最右边节点的节点。

我只需要知道如何在树的最右边的节点添加一个‘节点,但作为一个左子节点。实际上,我正在解决一个不同版本的问题。这里的问题是使用正确的指针。

构造一棵树的方式是,只通过左指针遍历树,生成树的预遍历

实际上,可以通过遍历树和维护一个previous node and linking them in the way we want :prev.left = current`‘来解决这个问题。

我处理这个问题的方法是:,如果有一棵树,如下所示

(只需将节点2至5添加为左子节点,然后将5至3节点添加为左子节点,最后添加6至4节点作为左子节点。)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                 10
                 / \
                8   2
               / \ / \
              3  5 4  6


               10
               /
              8
             / \
            3   5
               /
              2
             / \
            4   6

             10
             /
            8
           / 
          3
         /
        5
       /
      2 
     / \
    4   6
             10
             /
            8
           / 
          3
         /
        5
       /
      2
     /
    4
   /
  6

10 8 3 5 2 4 6是树的pre-order traversal

我知道这可以通过使用‘`prev指针和做一些事情来完成。我希望这样做。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                 10        
                 / \
                8   2      
               / \ / \
              3  5 4  6

                 ||
                 \/

                10
               /
              8
             / 
            3
           /
          5
         /
        2
       /
      4
     /
    6

节点定义为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 class Node{
    int data;
    Node left,right;
    Node(int d)
    {
        data=d;
        left=null;
        right=null;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-04-14 06:57:45

经过一番思考,我才能做到。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void addToRightMostNodeAsLeftChild(Node root,Node toBeAdded)
{
    if(root.left==null)
    {
        root.left=toBeAdded;
    }
    else
    {
        Node k=getRMNode(root.left);
        if(k.left==null)
        {
            k.left=toBeAdded;
        }
        else
            addToRightMostNodeAsLeftChild(k, toBeAdded);
    }
    root.right=null;
}

因此,当调用该方法时,当我想将节点2放置为5的左子节点(即节点8的最右节点(此处作为左子节点添加到某些XYZ节点XYZ为8的最右边节点)时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
addToRightMostNodeAsLeftChild(root,X) /*root represents node 10 and X represents node 2*/

它被转换为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
           10
           /
          8
         / \
        3   5
           /
          2
         / \
        4   6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55675521

复制
相关文章
Docker启动容器命令(docker start 容器名称)
启动容器 #启动容器 docker start 容器名称 非root用户 #启动容器 sudo docker start 容器名称
用户9006224
2022/12/21
2.7K0
【3/25】使用组合模式(Composite Pattern)实现布局容器
组合模式(Composite)是将对象组合成树形结构,以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。接下来我们考虑在当前项目中应用组合模式。
LIYI
2021/02/23
6910
【3/25】使用组合模式(Composite Pattern)实现布局容器
根据 PID 获取容器所在的 Pod 名称
在管理 Kubernetes 集群的过程中,我们经常会遇到这样一种情况:在某台节点上发现某个进程资源占用量很高,却又不知道是哪个容器里的进程。有没有办法可以根据 PID 快速找到 Pod 名称呢?
米开朗基杨
2020/07/17
6.9K0
Docker 容器中运行 Docker 命令
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145668.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/29
2.6K0
分组合计且排序和显示名称
        分组合计的一个问题是,合计中最大的问题是:只能显示groupby的字段,不能显示其它的字段。有时还需要排序,就很麻烦。这里有一个实现。 SELECT a.*, b.zu_no AS zuhao, b.qu AS quming, b.dui AS duiming, b.zu AS zuming FROM (SELECT qu + '-' + dui + '-' + zu AS E1, COUNT(*) AS cnt         FROM PETRO_WELL         GROUP B
用户1075292
2018/01/23
9400
在Linux中如何使用`wc`命令进行字符统计?
在Linux系统中,wc是一个非常有用的命令行工具,用于统计文件中的字符、单词和行数。wc命令可以帮助我们快速了解文件的基本信息,包括字符数、单词数和行数等。本文将详细介绍在Linux中使用wc命令进行字符统计的方法和示例。
网络技术联盟站
2023/06/17
5120
在Linux中如何使用`wc`命令进行字符统计?
使用容器进行应用程序路由
本文收录在DZone的容器编制与部署指南中。点击此处阅读更多富有洞察力的文章、行业统计数据等内容!
Techeek
2018/01/15
9190
js中,如何获取批量传入文件的大小,名称,进行循环展示。
<div class="handle"> <div class="handle-box" id="drop_area" v-on:drop="dropClick"> <div class="handle-btn"> <img class="btn-icon" src="./images/compress/new-btn-icon.png" alt="">
用户4344670
2022/09/02
10K0
Netty中的线程名称
创建的第一个步骤就是创建线程执行器ThreadPerTaskExecutor, 这个线程执行器就是用来创建Netty底层的线程的. 在学习Java的Thread时候,线程默认名称类似thread-0,thread-1,thread-2...以此类推. 而线程的名称对于我们排查问题的时候也是起到很大作用的, 因此我们在设计线程池, 也会根据一定的规则给线程池中的线程命名, 这也是一个好的习惯.
书唐瑞
2022/06/02
1.2K0
Netty中的线程名称
docker中启动所有的容器命令
docker中 启动所有的容器命令 docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 关闭所有的容器命令 docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 删除所有的容器命令 docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 删除所有的镜
吟风者
2019/07/25
29.3K0
控制名称空间的使用
如将对象投射到XML中所述,可以将类分配给名称空间,以便相应的XML元素属于该名称空间,还可以控制类的属性是否也属于该名称空间。
用户7741497
2022/07/04
1.1K0
在使用 SpringMVC 时,Spring 容器是如何与 Servlet 容器进行交互的?
最近都在看小马哥的 Spring 视频教程,通过这个视频去系统梳理一下 Spring 的相关知识点,就在一个晚上,躺床上看着视频快睡着的时候,突然想到当我们在使用 SpringMVC 时,Spring 容器是如何与 Servlet 容器进行交互的?虽然在我的博客上还有几年前写的一些 SpringMVC 相关源码分析,其中关于 Spring 容器如何与 Servlet 容器进行交互并没有交代清楚,于是趁着这个机会,再撸一次 SpringMVC 源码。
张乘辉
2020/03/25
2.9K0
使用 rush 进行命令并行处理
rush 是一个类似于 GNU-parallel 的工具,提供了并行化命令的处理方案。官方地址是:https://github.com/shenwei356/rush,该工具由人称爪哥的生信同行用 Golang 编写而成(强!)。他开发的其他几个工具也比较有名,如 seqkit[1]、csvtk[2]。感兴趣的朋友可以访问他的博客[3]。
王诗翔呀
2020/09/25
1.7K0
使用 rush 进行命令并行处理
【C++】 使用sort函数进行容器排序
今天刷leetcode时遇到一个需要对vector<vector<int>>类型的二维数组进行排序,记录一下怎么使用sort函数对这种容器的元素进行排序,如何做到性能最优。
adamtian
2020/10/11
3K0
Docker入门:使用Docker Compose进行容器编排
我们让应用工作在容器中是非常简单和方便的,但往往一个应用还要依赖数据库、缓存等应用,这样一组应用需要协同启动,同时这样一组应用也要工作在同一个网络中,以便相互访问,并跟不同组的应用之间隔离,以减少干扰,要达到这样的效果,我们需要自己控制好容器创建、启动等等,是一个麻烦的过程,不过官方为我们提供了容器编排工具,Docker Compose让我们可以便捷进行容器编排~
KenTalk
2023/04/07
3.7K0
Docker入门:使用Docker Compose进行容器编排
容器中Secret的基础使用教程
背景:我们都知道yaml文件中可以定义启动容器时使用的镜像所在地址,这里分为两种情况,即公有镜像和私有仓库镜像。
keepyan
2018/12/23
1.2K0
容器中Secret的基础使用教程
Lxcfs在容器集群中的使用
背景:我们知道在k8s 的pod 内,使用top/free/df等命令,展示的状态信息是从/proc目录中的相关文件里读取出来的,这些文件默认是读取pod所在节点主机对应文件的数据。
keepyan
2020/03/06
2.8K0
Lxcfs在容器集群中的使用
使用Python进行交易策略和投资组合分析
中衡量交易策略的表现。并将开发一个简单的动量交易策略,它将使用四种资产类别:债券、股票和房地产。这些资产类别的相关性很低,这使得它们成为了极佳的风险平衡选择。
deephub
2023/01/18
8670
【python 3.6】使用itertools.product进行排列组合
即,itertools.product(list1,list2......listn),将list1到listn中的元素依次排列组合,返回一个新的list
BH8ANK
2021/01/28
1.1K0
python 中的 组合
组合是一个面向对象的设计概念,模型a是有关系的。在composition中,一个称为composite的类包含另一个称为component的类的对象。换句话说,一个复合类有另一个类的组件
公众号---人生代码
2020/05/18
6870

相似问题

VBNET粘贴数据视图打开excel表

14

从文本框到Excel单元格的C# excel

21

aspnet和vbnet中空文本框的错误处理

22

DataGridView en VBnet

15

vbnet datagridview中的单元格值更改事件出错

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文