2
ツリーに複数の値を挿入しようとするとエラーが発生します。ツリーのさまざまなレベルで使用可能なリーフの複数を埋めることができるようにしたいと思います。ここに私のコードは次のとおりです。再帰バイナリ検索ツリーの挿入
tree = {
'key' : 'root',
'left': {
'key': 'something',
'left': None,
'right': {
'key': 'something',
'left': {
'key': 'somthing',
'left': None,
'right': None
}, 'right': {
'key': 'something',
'left': None,
'right': None
}
}
}, 'right': {
'key': 'something',
'left': {
'key': 'Something',
'left':
{
'key': 'something',
'left': None,
'right': None
}, 'right': None
}, 'right': {
'key': 'something',
'left': None,
'right': None
}
}
}
def insert(tree, k):
if tree['key'] == None:
tree['key'] = k
else:
if tree['key'] > k:
if tree['left'] == None:
tree['left'] = k
else:
insert(tree['left'], k)
if tree['key'] < k:
if tree['right'] == None:
tree['right'] = k
else:
insert(tree['right'], k)
insert(tree, "hello")
insert(tree, "data science")
私はこのようなルックスを取得していますエラー:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-114-d826085e4673> in <module>()
71
72 insert(tree, "hello")
---> 73 insert(tree, "data science")
74 #insert(tree, "jerry")
75 #insert(tree, "apple")
<ipython-input-114-d826085e4673> in insert(tree, k)
59 tree['left'] = k
60 else:
---> 61 insert(tree['left'], k)
62
63 if tree['key'] < k:
<ipython-input-114-d826085e4673> in insert(tree, k)
59 tree['left'] = k
60 else:
---> 61 insert(tree['left'], k)
62
63 if tree['key'] < k:
<ipython-input-114-d826085e4673> in insert(tree, k)
52
53 def insert(tree, k):
---> 54 if tree['key'] == None:
55 tree['key'] = k
56 else:
TypeError: string indices must be integers
私はかなり上記のエラーを理解していません。私はツリーキーの値を別の値と比較していると信じていますが、なぜそれが整数を求めているのかわかりません。どんな助けでも大歓迎です。
ありがとうございます!
ところで、それはむしろ、 '=='よりis' 'と' NONE'テストを行うのが普通です。そのようなアイデンティティテストを使うのは安全です。なぜなら、 'None'オブジェクトは1つしかないからです。 –