2016-11-23 142 views
0

我是新来叠加流动,所以很抱歉有任何错误,但我想回答这个问题:二叉树合并?

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

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

注释掉的东西只是我的努力得到的东西的工作..

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

    } 
} 
+0

只是做一些随机树T1和T2。这里的组合部分是微不足道的,因为它不需要求助。 (像这样:'TreeNode v = new TreeNode(10,t1,t2)') – GoneUp

+1

Woops。误解。你需要制作一个方法。因此,基本上几乎你所做的结合,只需添加一个TreeNode v参数并执行setleft和setRight v对象。 – GoneUp

回答

0

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

Node类:

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