No.9ベストアンサー
- 回答日時:
> でも自分の力じゃないから自分でもやってみようと思いました。
頑張って下さい。
> 授業では再帰をつかっていました。たとえば
> def DFS(tree)
> のなかに
> DFS(xx)
> と
元々二分木自体が再帰的構造なんで、再帰関数と相性がいいんですよ。
フツーに反復とか、ループ構文を使うと逆にメンド臭くなるでしょう。
「データ構造に合わせた関数」を書く方が利口でしょうね。
ただ、Pythonは再帰が「かなり」苦手なんで(すぐスタックを消費してしまって、下手すればC言語の方が再帰が得意かも)、と言う事はPythonと言うヘナチョコ実装の要請により、反復を書かなければならない場合は出てくるかもしれません。
ありがとうございます:)
あの質問ですけど、cametan_42さんは、ご教授などですか? 理由は、私の周りにもプログラミング大会で活躍したひととかいて、知識がすごいと思うけど、あなたのほうがすごそうだからです。
No.8
- 回答日時:
> リスとのインデクっスのひとつめ、つまり、リストの中の何番目のリストか、が、木の実際の数字に対応しています。
そしてそのリストに入っている数字がその気がつながっている数字です。もう誤字が酷いし、アレなんだけど、要するにリストのインデックスがvalueになってる、って事ね。
了解。
と言う事は、こういう事がしたいのかね?
実装例?:
https://ideone.com/h9S2S7
はい。ごめんなさい。ありがとうございます。
でも自分の力じゃないから自分でもやってみようと思いました。
あと、授業では再帰をつかっていました。たとえば
def DFS(tree)
のなかに
DFS(xx)
と
No.7
- 回答日時:
んじゃあ、木構造の図はアレでいいのね。
それでだな。
その木構造を
tree = [0, [1, 2], [3, 4], [5, 6], [], [], [], [], [], [], [], []]
みたいには表現出来ないと思うんだよな。
古典的な手法だと例えば、
tree = [0, [1, [3, [], []], [4, [] []]], [2, [5, [], []], [6, [], []]]]
みたいにして二分木を表現する。リストの枠組みを
[値, 左, 右]
みたいにして入れ子にしないとダメなんだよ。
その辺どう習ってんだろ?
重要なのは、関数を設計する前に「データ形式の定義」がキチンと成されてないと意味がない。
ただ、上の奴だと、理屈はともかくとして扱いづらいんで、例えば「連想リスト」と言うやり方を転用して
tree = [[0, 1, 2], [1, 3, 4], [3, [], []], [4, [], []], [2, 5, 6], [5, [], []], [6, [], []]]
とか書く事も可能。つまり、
[今の値(検索キー), 左の値, 右の値]
って設計して、左の値ならその値をキーとしてまた全体から検索する、とかね。
Pythonなら辞書型が使えるんで、
tree = {0: (1, 2), 1: (3, 4), 3: ([], []), 4: ([], []), 2: (5, 6), 5: ([], []), 6: ([], [])}
みたいにしてもいいんだけど、いずれにせよ、その辺、つまり「二分木をどう表現するか」をどう習ってるんだかサッパリ分からんのね。
逆に言うと、「データ設計方針」がハッキリすればどういう関数を書くのかはある程度自ずとから決まるわけ。
「二分木のデータ設計」はどういう風に習ってます?
ありがとうございます。
私はこのようにならています
tree = [[1,2], [3,4], [5,6], [7,8], [9,10], [11,12], [13,14], [], [], [], [], [], [], []]
たとえばこれで
0
1 2
3 4 5 6
7 8 9 10 11 12 13 14
リスとのインデクっスのひとつめ、つまり、リストの中の何番目のリストか、が、木の実際の数字に対応しています。そしてそのリストに入っている数字がその気がつながっている数字です。
No.6
- 回答日時:
> 0
1 2
3 4 5 6
このようになっています。
こういう事?(下の写真)
んで、一応確認するけど、日本人ですよね?
何か日本語がカタコトなんで心配なんですが。
結局、仮に下の木の構造だとして「何をしたい」の?_
それとも下の木も間違ってる?
はい。ありがとうございます。私のしたかったことは、"通りがけ順"です。
1まず左側のノードに移動2
左側に移動できなくなったらデータ出力
3右側のノードに移動
の順で探索を行います。
はい。私は日本人ですけど日本に住んでいる時間はみなさんより短いです。
No.5
- 回答日時:
> 本当は[[1.2], [3,4], [5,6],
[9,10], [11,12], [13,14], [], [], [], [] [] ,[] ,[]]
のようになっていて、リストの最初のインデックスの数字がつながてる数字を表しています。
例)1という数字は3と4についてる
二分木なのかね?
でも、
> 1という数字は3と4についてる
なら2はどこにぶら下がってるんだろ?
どうにも想像付かないなぁ。
それとも、1は3と2に分岐して、3は5と6に繋がってんのかしら?
No.4
- 回答日時:
> アルゴリズムの授業で, 分岐した枝で、しれより下がなくなたことを判定したかたです。
まあ、treeって名付けてるから「木構造」に関連してるとは思ったんだけど、ただ、このリストは木構造を表してる?
> [[0],[1,2],[3,4],[],[]]
だとどうにも木に見えないんですが。
どういう木を前提にして書いてるんだろ?
これじゃあ上手く行かないような気がするんですが。
これは所与なの?それとも自分で考えました?
えとあんまりあってませんでした。本当は[[1.2], [3,4], [5,6],
[9,10], [11,12], [13,14], [], [], [], [] [] ,[] ,[]]
のようになっていて、リストの最初のインデックスの数字がつながてる数字を表しています。
例)1という数字は3と4についてる
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- 流行・カルチャー 東京にある大使館は157みたいですが 6 2022/06/07 20:35
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(IT・Webサービス) Googleマップで検索した結果のリストを作る方法はありますか? 1 2022/11/15 10:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
べき乗
-
無限から無限を引いたら何にな...
-
皆さん定義を教えてください 「...
-
1未満と1以下の違い
-
ACCESS VBAでインポート定義の場所
-
eの0乗は1ってどういう原理です...
-
p⇒q=(¬p)∨qについて
-
「logx^2=2logx」が間違って...
-
ACCESS IIF関数 複数条件の設...
-
なぜ、直角三角形ではないのにs...
-
Excelファイルの「数式」タブ→...
-
0^1(0の1乗)はいくつでしょ...
-
-2は2の倍数ですか?
-
日本語 ことば ひとまわり ふた...
-
「互いに素」の定義…「1と2は互...
-
正方行列ではない行列にも行列...
-
e<3の証明を教えてください。
-
2変数関数の極値について
-
なぜ小数は自然数ではないので...
-
ノルム空間
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
皆さん定義を教えてください 「...
-
べき乗
-
1未満と1以下の違い
-
無限から無限を引いたら何にな...
-
理論物理学でよく用いられる地...
-
(-1) ^2πってなんで1じゃないん...
-
ACCESS VBAでインポート定義の場所
-
変数の宣言の名称を教えてくだ...
-
「互いに素」の定義…「1と2は互...
-
日本語 ことば ひとまわり ふた...
-
ACCESS IIF関数 複数条件の設...
-
質問の定義が分からないので確...
-
なぜ、直角三角形ではないのにs...
-
min関数 一橋大学過去問
-
質問の定義が分からないので確...
-
ヘシアンが0の場合どうやって極...
-
excel vba 名前付きセルが存在...
-
数字の1とは何なのか?
-
マイナス7は素数ですか?
-
「logx^2=2logx」が間違って...
おすすめ情報
tree は二重リストになっています
*使わなかったけど