gpt4 book ai didi

java - Java中具有2个以上子节点的树的深度优先搜索

转载 作者:行者123 更新时间:2023-12-01 23:32:52 25 4
gpt4 key购买 nike

我有一个具有树结构的应用程序,其中每个父节点都有 3 个或更多子节点。每个节点包含一个整数值。我试图查看树中是否存在给定的整数值。如何在树上进行深度优先搜索?我知道我们从根部开始,然后尽可能地探索树的每个分支。不过,我在 Java 中实现这个方法时遇到了麻烦。我是否需要某种其他数据结构来进行遍历?

如果有人可以提供示例实现,将会很有帮助。

树结构如下。我需要实现findNode函数:

public class Tree{

public Node{

Node [] children;
int val;

public Node[] getChildren(){
return children;
}

public getVal(int i){
return children[i].val;
}

}

public boolean findNode(int val){


}

}

最佳答案

迭代:

public boolean findNode(Node node, int value) {
Deque<Node> stack = new ArrayDeque<Node>();
stack.push(node);
while (!stack.isEmpty()) {
Node n = stack.pop();
if (n.getVal() == value)
return true;
for (Node child : n.getChildren())
stack.push(child);
}
return false;
}

递归:

public boolean findNode(Node node, int value) {
if (node.getVal() == value)
return true;
for (Node n : node.getChildren()) {
if (findNode(n, value))
return true;
}
return false;
}

public int getVal() {
return val;
}

您不需要 getVal(int i) 方法。节点参数是树的根。

关于java - Java中具有2个以上子节点的树的深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19081595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com