ホームページ  >  に質問  >  本文

算法 - 如何不用递归 列出 树(多叉) 中根节点到叶节点的所有路径(Java)

比如,对于下面这个二叉树,它所有的路径为:

8 -> 3 -> 1

8 -> 2 -> 6 -> 4

8 -> 3 -> 6 -> 7

8 -> 10 -> 14 -> 13

怎么用Java去实现?

天蓬老师天蓬老师2743日前602

全員に返信(4)返信します

  • 阿神

    阿神2017-04-18 10:53:58

    再帰が必要ない場合は、最初に深さを使用してください。
    スタックを使用して、スタックが空でない場合は、最初にルート ノードをスタックにプッシュし、現在のノードの中央値を出力します。次に、最初に右側のサブツリーをスタックにプッシュし、次に左側のサブツリーをプッシュします。スタックに追加し、スタックが空かどうかを判断し、ループします... 手順は次のとおりです:
    1) まずバイナリ ツリーのルート ノードをスタックにプッシュします
    2) スタックが空かどうかを判断します (そうでない場合)。 、スタックからポップしてポップツリーを出力します ノードの値
    3) ポップツリーノードの右のサブツリーがスタックにプッシュされます
    4) ポップツリーノードの左のサブツリーがスタックにプッシュされます
    5) (2)にループバックします
    これはメソッドの前に見たものですが、質問者さんの助けになるでしょうか?
    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:53:58

    再帰をスタックに置き換えます: https://zh.coursera.org/learn...

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:53:58

    まずは深さ? 。 。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:53:58

    幅優先トラバーサルを使用し、ノードのすべての親ノードを状態に保存し、葉ノードに到達した後に出力します。

    返事
    0
  • キャンセル返事