我需要遍历二叉树,跳过满足条件的任何节点的子节点。
这实现了树引导的聚类方法;当子树的叶子共同满足条件时,它们被视为一个簇。
似乎从前序遍历开始,但我不确定如何修改算法以跳过当前节点的所有子节点。
更新
除了下面两个(正确的)答案之外,还可以使用以下 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/