java - 二叉树遍历时跳过节点

标签 java language-agnostic binary-tree tree-traversal cluster-analysis

我需要遍历二叉树,跳过满足条件的任何节点的子节点。

这实现了树引导的聚类方法;当子树的叶子共同满足条件时,它们被视为一个簇。

似乎从前序遍历开始,但我不确定如何修改算法以跳过当前节点的所有子节点。

更新

除了下面两个(正确的)答案之外,还可以使用以下 Java 库:

  • MyArch TreeIter - 通用(带有适配器类)树遍历,具有子跳过和动态最大遍历深度
  • Phylosoft Forester - 使用 getAllExternalDescendants 和 Newick 到 XML 转换器的树实现

最佳答案

如果跳过所有子项,您不仅指的是直系后代,还指的是它们的整个子树,则可以执行以下操作:

public void traverse(Node n){
    if (n==null)
        return;
    doSomethingWith(n);
    if (!conditionIsMet(n)){
        traverse(n.left);
        traverse(n.right);
    }
}

关于java - 二叉树遍历时跳过节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943582/

相关文章:

java - 在 Java 中读取打开的进程/应用程序列表?

algorithm - 如何检测重复数据?

algorithm - 通过添加或乘以节点找到树可以生成的所有数字

树上的算法。是否有提示可以帮助指出有效解决问题的方法?

Java:如何让UDP套接字程序以阻塞I/O方式接收和发送?

java - 小程序在屏幕上的位置(x,y 坐标)

java - 如何将自定义 .. 包(?)导入 netbeans 6.8

haskell - 1 :1 type/type-class-instance relation? 是否有可行且类型安全的替代方案

algorithm - 单个 "1"位的 SHA-256 哈希值是多少?

c++ - 从二叉搜索树中删除节点