合并树节点

2023-12-12

有谁知道一种按以下方式合并树节点的算法?

treeA
   \ child a
          \node(abc)
   \ child b
          \node(xyz)                   

         + 

treeB
   \ child a              
          \node(qrs)
   \ child b
          \node(xyz)
               \node(pdq)
   \ child c
          \node(pdq)

         = // do merge

treeMerged     
   \ child a
          \node(abc) 
          \node(qrs)
   \ child b
          \node(xyz)
               \node(pdq)
   \ child c
          \node(pdq)

任何帮助将不胜感激。


好吧,当我真正花时间思考这个问题时,发现解决方案比我预期的要简单得多。 (我已经发布了下面代码的关键部分)

   private TreeNode DoMerge(TreeNode source, TreeNode target) {
        if (source == null || target == null) return null;

        foreach (TreeNode n in source.Nodes) {
            // see if there is a match in target
            var match = FindNode(n, target.Nodes); // match paths
            if (match == null) { // no match was found so add n to the target
                target.Nodes.Add(n);
            } else { 
                // a match was found so add the children of match 
                DoMerge(n, match);
            }

        }
        return target;

    }

仍然有兴趣知道是否有人有更好的解决方案?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并树节点 的相关文章

随机推荐

  • 如何使用 Selenium 和 Xpath 通过忽略大小写的文本查找元素

    我使用的是java版本 1 8 0 191 和selenium 3 141 59 我试图找出页面是否包含 error 或 erreur 一词 另外 我希望它不区分大小写 查找文本很容易 List
  • Try-catch 可以加速我的代码吗?

    我编写了一些代码来测试 try catch 的影响 但看到了一些令人惊讶的结果 static void Main string args Thread CurrentThread Priority ThreadPriority Highes
  • UISearchBar:更改外观 - 形状、背景、覆盖图像

    我想更改默认 UISearchBar 的外观 例如 您将如何在 Google iPhone 应用程序中重新创建搜索框 如下所示 如何叠加图像来产生这种效果 source isedb com 经过对自定义搜索栏可能性的一些调查 我倾向于说这是
  • jQuery UI 弹跳效果对齐 Firefox 和 IE8 中左侧的元素

    在 Firefox 和 IE8 或更低版本中 JQuery UI 的反弹效果存在问题 IE9 Chrome Safari都能正常渲染反弹效果 任何想法是什么导致了这个 该问题在 Firefox 和 Chrome 中都有体现 弹出窗口询问您是
  • Matlab 中的无效对象句柄错误

    我有以下代码 它是卫星绕地球运动的图形渲染 function ex global state fh figure Menu none Toolbar none Units characters hPanAni uipanel parent
  • Flutter:任务“:app:packageDebug”执行失败

    您好 我在使用 flutter 编译时遇到问题 我已经尝试使用 flutter run 进行调试 debug 但没有成功 我认为来自 gradle 但我不知道如何解决这个问题 Resolving dependencies 3 5s FAIL
  • JavaScript 倒计时

    我已经在网上搜索过 但所有可用的都是您指定日期的地方 并且它会倒计时到该日期 我需要的是从 27分43秒 以这种格式 一直倒数到0的东西 无论何时他们登陆页面 有人得到任何可用的片段吗 像这样的事情应该可以解决问题 我很无聊 决定自己做而不
  • 我可以在 CDH 中安装多个 Spark 版本吗?

    我使用的是cdh5 1 0 它已经安装了默认的spark 但是 我想使用 Spark 1 3 我也可以将此版本安装到cdh5 1 0吗 如何才能设置这些呢 新版本的spark也会通过Cloudera manager监控吗 是的 您可以运行您
  • 检测应用程序的首次运行

    我正在创建一个应用程序 当应用程序第一次启动时 我必须在其中创建一个 plist 稍后我将使用 plist 来存储用户稍后输入的详细信息 如何检测应用程序的首次启动 我正在尝试 NSUserDefaults 但我认为我做错了什么 您可以使用
  • 如何在 Android 上的 MapView 中添加地图比例尺?

    我正在努力添加一个地图比例 根据当前的缩放级别在屏幕上显示当前的长度 我有一种感觉 它可能存在一些预定义的类可供使用 但我不知道 我已经搜索了很多但找不到任何东西 我非常感谢任何帮助 Alex 好吧 我现在明白了 Luis 的回答对我帮助很
  • 如何将值传递给构造函数?

    很抱歉我的问题有点理论化 我是 OOP 新手 正在研究以下代码 public interface IShape double getArea public class Rectangle IShape int lenght int widt
  • 如何从已经有 main 的 gradle 项目中运行 Kotlin 脚本?

    我有 Ktor 项目 其主要名称为Application kt 布局是这样的 com myProject Application kt Testing kt api Routes kt routes NewRoutes kt OpenApi
  • Boost ASIO HTTP 客户端 POST

    我正在尝试让 boost ASIO 库发送帖子 但变量从未发送到服务器 我知道服务器工作正常 用curl测试 此代码不起作用 变量 msg 未发布到服务器 但当我使用curl 时它确实起作用 tcp resolver resolver io
  • 在外部区域达到阈值后允许 BottomSheet 向上滑动

    我正在尝试复制当前 Google 地图的行为 该行为允许从底部栏向上滑动时显示底部工作表 请注意 在下面的录音中 我首先点击底部栏上的一个按钮 然后向上滑动 这又会显示其后面的工作表 我找不到任何地方解释如何实现这样的事情 我尝试探索 Bo
  • Android sha512 示例

    有人可以提供一个关于如何使用 java android 哈希密码的示例吗PW HASH ITERATION COUNTsha512 salt 的迭代 在伪代码中 hash sha512 concat pw salt for i 1 i
  • 在 django-apps 中查找静态文件和模板的顺序

    例如 我的 django 项目中有 2 个应用程序 它们的模板和静态文件具有相同的子路径 app1 static style css templates index html app2 static style css templates
  • Dymola 标志列表

    Dymola 中的一些设置可以通过在 命令 窗口中设置标志来更改 标志的一些示例是 Advanced AutoFormatting Advanced PedanticModelica Advanced LogStartValuesForIt
  • 以编程方式将 RDLC 报告另存为 PDF

    我有一份报告需要运行多次并保存为 PDF 我目前正在以编程方式生成 PDF 格式的报告 但希望保存报告 而无需用户每次都手动选择保存选项 我用来将单个报告呈现为 PDF 的代码是 Dim warnings As Microsoft Repo
  • Flink:行时间属性不得位于常规联接的输入行中

    使用 flink SQL API 我想将多个表连接在一起并在时间窗口内进行一些计算 我有 3 个来自 CSV 文件的表 一个来自 Kafka 在卡夫卡表中 我有一个字段timestampMs 我想将其用于我的时间窗口操作 为此 我执行了以下
  • 合并树节点

    有谁知道一种按以下方式合并树节点的算法 treeA child a node abc child b node xyz treeB child a node qrs child b node xyz node pdq child c nod