2016-11-23 140 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())); 
}