ツリーのインオーダートラバーサルを実行しようとしています。コード自体は正しく動作していることを除いて、正しく感じます。私はそれがif条件、Pythonでの動作の仕方、あるいはおそらく復帰と何かをしなければならないと感じています。リターンの代わりにプリントを使用すると正しく動作しますが、リターンを使用して正しい答えを得たいと思っています。たとえば、ツリー[1、None、2,3]の場合、私のコードは[1]を返しますが、これは間違いです。Inorderバイナリツリートラバーサル(Pythonを使用)
また、この問題はリストの理解を使用して解決できますか?もしそうなら、どんなサンプルコードも非常に高く評価されます。ここで
は私のコードです:
class Solution(object):
def inorderTraversal(self, root):
res = []
if root:
self.inorderTraversal(root.left)
res.append(root.val)
self.inorderTraversal(root.right)
return res
も重複としてこれをマークする前に、私が知っている順トラバーサルにStackOverflowの(時間のたくさん)に尋ね、それらのどれもが、なぜ私の理解、私は理解して助けされていません間違っている。誰かが私のアプローチを修正する方法を教えてくれるのではなく、単に説明なしに別のリンクを投稿するだけであれば、とても感謝しています。どうもありがとうございます!
が構成されています。これは、次のようにはるかに簡単に行うことができますか? –
バイナリツリーです(必ずしもバイナリ検索ではありません)。たとえば、ルートに渡されたリストの形式は、ルート、左ツリー、右ツリー.... [1、なし、2,3]のルートは1、左の子なし、2の右の子(a 3の左の子)。 –
私が尋ねる理由は、あなたが 'root'のためにリストを渡しているようだが、リストに' left'や 'right'属性がないからです。 –