我遇到了一个面试问题,要求我创建一个方法来查找二叉树中的所有子树。我无法弄清楚,我将如何回答这个问题?有没有一种简单的方法来使用递归来实现它?我应该遍历清单吗? 任何建议都非常感谢!
到目前为止,我只编写了一个通用节点类:
public class Node<Object>
{
private Object data ;
private Node<Object> left ;
private Node<Object> right ;
public Node()
{
this(null,null,null) ;
}
public Node(Object D, Node<Object> L, Node<Object> R)
{
data = D ;
left = L ;
right = R ;
}
public Object getData()
{
return data ;
}
public void setData(Object d)
{
data = d ;
}
public Node<Object> getLeft()
{
return left ;
}
public Node<Object> getRight()
{
return right ;
}
public void setLeft(Node node)
{
left = node ;
}
public void setRight(Node node)
{
right = node ;
}
}
非常感谢任何建议!
答案 0 :(得分:0)
很大程度上取决于它对&#34;发现&#34;一个子树。每个节点都有一个根,所以简单地识别或计算它们只是找到所有节点。您选择深度优先或广度优先遍历树应该足够了。
如果&#34;发现&#34;一个子树意味着做一些特定的或与之相关的东西,然后这可以使这两个遍历策略中的一个比另一个更合适。