首页 > 解决方案 > Java中的树比较算法

问题描述

我正在寻找一种算法来比较两棵树。

我在Java中有这个类

public class TreeNodeDSP {

  TreeNodeDSP parent;
  List<TreeNodeDSP> children;
  NodeDSP value;

  public TreeNodeDSP(TreeNodeDSP parent) {
    this.parent = parent;
    children = new ArrayList<>();
  }

  public TreeNodeDSP(TreeNodeDSP parent, NodeDSP value) {
    this.parent = parent;
    children = new ArrayList<>();
    this.value = value;
  }

  public void addChild(TreeNodeDSP node) {
    if (node != null && node.getValue() != null) {
      if (children.stream().noneMatch(child -> Objects.equals(child.getValue(), node.getValue()))) {
        children.add(node);
      }
    }
  }

  public TreeNodeDSP getParent() {
    return parent;
  }

  public void cleanChildren() {
    children = new ArrayList<>();
  }

  public int getChildrenCount() {
    return children.size();
  }

  public TreeNodeDSP getChildrenAt(int position) {
    if (children.size() > position && position > -1) {
      return children.get(position);
    }
    return null;
  }

  public List<TreeNodeDSP> getChildren() {
    return children;
  }

  public NodeDSP getValue() {
    return value;
  }

  public boolean isLeaf() {
    return children.isEmpty();
  }

}

我认为NodeDSP不需要类的代码。

现在,我有一个算法来填充我的树(TreeNodeDSP)并面临基于自动填充树(计算一些条件)执行操作的问题,

我手动填充我的树并工作。

我需要发现我的树(手动填充和自动)在其节点(内部)中有什么区别,不仅说是不同的树。当某些节点/叶子不同时,我需要打印其内容。

但是,我不知道如何从比较算法开始。

标签: javaalgorithmtreecomparison

解决方案


推荐阅读