我正在使用由嵌套字符串列表组成的数据类型的在线编辑器。请注意,如果每次更改单个值时我都要传输整个结构,那么流量可能会变得难以忍受。所以,为了减少流量,我想到了应用 diff 工具。问题是:如何找到并报告两棵树的差异?例如:
["ah","bh",["ha","he",["li","no","pz"],"ka",["kat","xe"]],"po","xi"] ->
["ah","bh",["ha","he",["li","no","pz"],"ka",["rag","xe"]],"po","xi"]
在那里,唯一的变化是"kat" -> "rag"
在树的深处。大多数 diff 工具适用于平面列表、文件等,但不适用于树。我找不到任何关于该特定问题的文献。报告此类变化的最小方式是什么?找出它的有效算法是什么?