二叉树合并?

时间:2016-11-23 11:44:41

标签: java tree binary-search-tree

我是新手堆叠流量,对任何错误感到抱歉,但我想回答这个问题:

“编写一个方法,将两个二叉树t1,t2和二叉树节点v作为参数。它构造并返回一个新的二叉树,其中v为其根,其左子树为t1,右子树为T2“。

我已经做了几个小时的尝试,似乎甚至不能制作一个二叉树..老师不会真正解释并希望我们使用对象来做。这是她希望我们使用的格式..有人可以帮助我..

注释掉的东西只是我试图让某些东西发挥作用。

public class treeNode
{
    private  Object da;
    private treeNode left; 
    private treeNode right;
    public treeNode(Object newItem)
    {
        da = newItem; 
        left = null; 
        right = null; 
    }
    public treeNode(Object newItem, treeNode leftNode, treeNode rightNode)
    {
        da = newItem; 
        left = leftNode; 
        right = rightNode; 
    }

    public void setItem(Object newItem)
    { 
        da = newItem; 
    }
    public Object getItem() 
    { 
        return da; 
    }
    public void setLeft(treeNode leftNode)
    { 
        left = leftNode;
    }
    public treeNode getLeft() 
    { 
        return left; 
    }
    public void setRight(treeNode rightNode) 
    { 
        right = rightNode;
    }
    public treeNode getRight() 
    { 
        return right; 
    }
    //------------------------

    public void buildTree()
    {

    }   
    //public void combine (l , r)
    //{
    //  T = 5;
    //  setLeft(l);
    //  setRight(r);
    //  return T;
    //}
    //-----------------------
    public static void main (String args [])
    {
        //   treeNode a = new treeNode(5);
        //   treeNode b = new treeNode(8);
        //   treeNode c = new treeNode(2);

        //  a.setLeft(b);
        //  a.setRight(c);

        //  System.out.println(a.da);
        //  System.out.println(a.getLeft() );
        //  System.out.println(a.getRight() );



//      treeNode t = new treeNode();
//      t.left = t1;
//      t.right = t2;
//      System.out.println(buildTree(t));

    }
}

1 个答案:

答案 0 :(得分:0)

我的解决方案包含两个类:树和节点。 该解决方案可以只使用Node实现,但是由于您被要求该函数将接收两个树和一个节点,所以我像这样实现它。我不知道你是否了解java泛型(我使用的'T'),如果你不知道,你可以像你发布的代码一样使用Object。我忽略了所有的getter和setter,但当然你可以添加它们。

节点类:

public class Node<T> {
    private T data;
    private Node right;
    private Node left;

    public Node(T data) {
        this.data = data;
    }

    public Node(T data, Node right, Node left) {
        this.data = data;
        this.right = right;
        this.left = left;
    }
}

树类:

public class Tree<T> {
    private Node<T> root;

    public Tree(Node root) {
        this.root = root;
    }

    public Node<T> getRoot() {
        return root;
    }
}

组合功能:

public Tree combine(Tree t1, Tree t2, Node v) {
    return new Tree(new Node(v, t1.getRoot(), t2.getRoot()));
}