gpt4 book ai didi

java - 使用 Stack 跟踪一般树中节点的所有祖先

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

我已经创建了使用堆栈跟踪一般树中节点的祖先的函数,但它不起作用,需要帮助 enter image description here (John,1925)(Fred,1900)的共同祖先:(弗雷德,1900)(John,1925)(Fred,1953)的共同祖先:(约翰,1925),(弗雷德,1900)

public void Find_FamilyTree(Node node,Node toFind,Stack<Node> st)
{

st.push(node);
if(node.getData().getName().equals(toFind.getData().getName()))
{
st.pop();
}

如果节点是叶节点,则弹出

    if(node.getChildrenCount()==0)
{
st.pop();
}


for(Node nodes:node.getChildren())
{
Find_FamilyTree(nodes,toFind,st);
}

}

最佳答案

很简单。

仅使用 DFS 来跟踪树并在进入/离开节点时推送/弹出节点。只有找到该节点才立即返回,然后您就得到了祖先的堆栈。

示例如下:

public boolean Find_FamilyTree(Node node,Node toFind,Stack<Node> st) {

if(node.getData().getName().equals(toFind.getData().getName()))
{
return true;
}
st.push(node);

for(Node nodes:node.getChildren())
{
if(Find_FamilyTree(nodes,toFind,st)){
return true;
}
}

st.pop(node);
return false;

}

关于java - 使用 Stack 跟踪一般树中节点的所有祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40195219/

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