如何在java中给出链接二叉树,甚至是常规二叉树,找到所有子树?

时间:2014-10-17 20:53:57

标签: java tree binary-tree subtree

我遇到了一个面试问题,要求我创建一个方法来查找二叉树中的所有子树。我无法弄清楚,我将如何回答这个问题?有没有一种简单的方法来使用递归来实现它?我应该遍历清单吗? 任何建议都非常感谢!

到目前为止,我只编写了一个通用节点类:

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 ; 
    }        
}

非常感谢任何建议!

1 个答案:

答案 0 :(得分:0)

很大程度上取决于它对&#34;发现&#34;一个子树。每个节点都有一个根,所以简单地识别或计算它们只是找到所有节点。您选择深度优先或广度优先遍历树应该足够了。

如果&#34;发现&#34;一个子树意味着做一些特定的或与之相关的东西,然后这可以使这两个遍历策略中的一个比另一个更合适。