2016-03-25 4 views
0

ツリー構造の設計の一部として子を含む子を含むノードをどのように正確に処理するかを理解する上で問題があります。ノードとツリー構造(参照/ヌルポインタ)に問題がある

私のコードには2つのオブジェクトがあります。ひとつは "ツリー"と呼ばれるオブジェクトであり、実際にはツリー全体に作用する多くのジェネリックメソッドを持つ "ルート"ノードです。オブジェクト2つの文字列変数と(子)ノードのリストを含む、いわゆるノードです。

ノードコード:

public class Node { 
    String type; 
    String name; 
    List<Node> children; 
    /* Constructors and other methods */ 

本当に問題のために必要なすべてのコードです。

質問の中心に到達するには:どのようにノードのコピーを渡してすべてのデータを保持するか(子供のすべての子どもと子供の子)私の前のノード? (私が合格した場合、別の方法にnode.childrenし、この子供を修正すると言うのjavaの私の理解では、それは前のノードの右側にも、それを修正するのでしょうか?)

は、事前にありがとう:)

+2

あり、それは言うのは難しいですが、あなたは再帰的な深いコピーの方法のいくつかの種類を書きたいように聞こえます。 –

+0

可能な複製http://stackoverflow.com/questions/16098362/how-to-deep-copy-a-tree – Raedwald

+0

はい、それを行う唯一の方法ですか?それは〜2.3の私の分岐要因を考えるとかなり時間がかかることがあります。それが唯一の解決策ならば、私はそれに対処しなければなりません – Dominus

答えて

1

私はRaedwaldの答えが正しいと信じています(もっと効率的な解決法があるとは思っていましたが)。

stackoverflow.com/questions/16098362/how-to-deep-copy-a-treeの

可能性の重複 - レドワルド答えに興味のある人のための

、私の最後のアルゴリズム(一般的なバージョン)レドワルドによって与えられたことのいくつかのコードがなければ

public Node copy() { 
    Node nodeCopy = new Node(this.getType(), this.getName()); 
    if (this.children != null) { 
     for(int i=0; i < this.children.size(); i++) 
      nodeCopy.children.add(this.getChild(i).copy()); 
    } 
    return nodeCopy; 
} 
関連する問題