質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

843閲覧

二分木の引数xのノードの深さを返す関数

Angela_Nakasugi

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/10/20 12:34

以下のような二分木のルートについて

class Node: def __init__(self,value): self.value =value self.left =None self.right =None def __str__(self): return str(self.value) top =Node(1) node_l =Node(2) node_r =Node(3) top.left =node_l top.right =node_r node_l_l=Node(4) node_l_r=Node(5) node_l.left =node_l_l node_l.right =node_l_r node_r_l =Node(6) node_r.left =node_r_l node_l_r_l =Node(7) node_l_r.left =node_l_r_l node=top.left print(node)

イメージ説明
ノードtopと、値xを引数にとりノードの深さを返す関数について考えています。

例えば

depth(top,7)ならば
3
depth(top,1)ならば
0
depth(top,8)ならば
-1

と返し、値xがノードに含まれていなければ(例えば8など)-1と返すような関数です。

お力添えいただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じかと〜

python3

1def depth(node, x, level=0): 2 if node.value == x: 3 return level 4 for child in [node.left, node.right]: 5 if child: 6 lv = depth(child, x, level+1) 7 if lv >= 0: 8 return lv 9 return -1

???? replitで動作確認してみた

投稿2021/10/20 17:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Angela_Nakasugi

2021/10/25 06:57

うまく動作しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問