
No.1ベストアンサー
- 回答日時:
二分木を deep copy するって, 普通に再帰的にコピーすればいいと思うんだけど.... 具体的な実装を示したうえで「ここでこんな風に困っている」というのが出てくれば, それなりにアドバイスできるかもしれん.
ヒープツリーの方は, 配列で実装しているならその配列をコピーすればいい. もちろん付随するデータがあるならそれもコピーする必要があるけど, あなたがどう実装しているか知らないのでその辺は適当に判断してくれ.
回答ありがとうございます。
汚いソースコードで恥ずかしいんですけども、、
一応動いてるんですけど他の人の実装はどうなってるか知りたいです。
// ノードのコピー
Node* BinaryTree::CopyNode(Node* src) {
Node* p = NULL;
if (src == NULL) return NULL;
p = new Node(src->GetData());
Node* c = CopyDFO(src->GetChild());
if (c != NULL) p->SetChild(c);
Node* n = CopyDFO(src->GetNext());
if (n != NULL) p->SetNext(n);
return p;
}
No.4
- 回答日時:
木の探索は、再帰でもまあいいけど、キューを使えば再帰にする必要もない。
1. キューのルートノードを入れる
2. もし、キューが空なら終了
3. キューからノードを一個取り出す。
4. 取り出したノードの子ノード(ニ分木なら2個)をキューにいれる
5. 今注目しているノードについての処理
(深いコピーしたいなら、ここで、コピー木の作成処理をすればよい)
6. 2,に戻る
って感じです。
キューをFIFO(First In First Out)にすれば、幅優先探索
キューをLIFO(Last In First Out)にすれば、深さ優先探索
になります。
No.3
- 回答日時:
newを使っているということはC++ですね。
C++ならコンテナは(なるべく)自作せずにSTLを使うべきでしょう。
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture …
STLなら、「コピーをどう実装しよう」という悩みは根本から解決されます。
「実装する必要がない」からです。
これぞ、究極の解決策と思いませんか?
プログラミングで言われることに次の言葉があります。
「バグを作らない究極の方法がある。
それはプログラムを作らないことだ!」
STLに関する情報は書籍も沢山ありますし、
サイトもあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 哲学 美大に通っている者です。美術関係の哲学を履修しています。 最近に出た課題の小テストについて、どれが正 2 2022/07/09 22:45
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Excel(エクセル) エクセル ブック間のコピー 5 2022/04/24 08:11
- 書籍・本 自分の本をコンビ二に持っていってコピーする嫌だし本をコピーするのにお金をつかいたくありません 本は持 1 2023/07/04 17:16
- 書籍・本 自分の本をコンビ二に持っていってコピーする嫌だし本をコピーするのにお金をつかいたくありません 本は持 6 2023/03/20 07:53
- その他(悩み相談・人生相談) いつも本を持って来てコピーする 人がいるけどなんのためにコピーするんですか? 本を持っいても見ればい 5 2022/12/01 09:07
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
Excelでコピーしたセル(テキス...
-
Eclipseのコード入力時の、行コ...
-
DataTableに入っているデータを...
-
Ctrl + Cなど複数の入力キー...
-
VBScript でサブフォルダも含め...
-
Eclipseでコピーするとき行数な...
-
マウントしたディスクにcpで、...
-
Listviewに表示された文字のコ...
-
JP1の質問です。
-
C++言語で、構造体のコピーは可...
-
.BATでクリップボードに複数の...
-
バッチで当日日付で作成される...
-
Delphi6 ShowMessage のタイトル
-
jakarta poiを使用し、EXCELの...
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
彼女の過去の恋愛に嫉妬してし...
-
svnでファイル移動すると履歴が...
-
CSVファイルの特定行の削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
DataTableに入っているデータを...
-
Eclipseのコード入力時の、行コ...
-
C++言語で、構造体のコピーは可...
-
Ctrl + Cなど複数の入力キー...
-
一行おきに貼り付ける 可能でし...
-
マウントしたディスクにcpで、...
-
Activesheet.Pasteで困っています
-
文字列の切り出し
-
jakarta poiを使用し、EXCELの...
-
Listviewに表示された文字のコ...
-
【UWSC】WEBページ内コピーした...
-
他プロジェクトのFormを自プロ...
-
Excelでコピーしたセル(テキス...
-
エクセルVBA 実行時エラー'...
-
VBScript でサブフォルダも含め...
-
シートに張り付けたボタンがシ...
-
Eclipseでコピーするとき行数な...
-
【再質問】Eclipseのコード入力...
-
バッチで当日日付で作成される...
おすすめ情報