0

我遇到了一个面试问题,要求我创建一种方法来查找二叉树中的所有子树。我想不通,我该如何回答这个问题?有没有一种简单的方法可以使用递归来实现这一点?我应该遍历列表吗?任何意见是极大的赞赏!

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

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

任何意见是极大的赞赏!

4

1 回答 1

0

很大程度上取决于“找到”子树的含义。每个节点都有一个根,因此简单地识别或计数它们就等于找到所有节点。您选择的树的深度优先或广度优先遍历应该足够了。

如果“找到”子树意味着对它或对它做一些特定的事情,那么这可能会使这两种遍历策略中的一种比另一种更合适。

于 2014-10-17T21:05:14.370 回答