>  Q&A  >  본문

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

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

8 -> 3 -> 1

8 -> 2 -> 6 -> 4

8 -> 3 -> 6 -> 7

8 -> 10 -> 14 -> 13

怎么用Java去实现?

天蓬老师天蓬老师2743일 전601

모든 응답(4)나는 대답할 것이다

  • 阿神

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

    재귀가 필요하지 않다면 먼저 깊이를 사용하세요!
    스택을 사용하여 먼저 루트 노드를 스택에 푸시합니다. 스택이 비어 있지 않으면 이를 팝하고 현재 노드의 중앙값을 출력합니다. 그런 다음 오른쪽 하위 트리를 먼저 스택에 푸시한 다음 푸시합니다. 왼쪽 하위 트리를 스택에 올려놓고 스택이 비어 있는지 판단하고 루프를 돌립니다...
    단계는 다음과 같습니다.
    1) 먼저 이진 트리의 루트 노드를 스택에 넣습니다
    2) 스택이 비어 있는지 판단하고, 비어 있지 않으면 스택을 팝하고 팝된 트리 노드의 값을 출력
    3) 팝된 트리 노드의 오른쪽 하위 트리를 스택에 푸시
    4 ) 팝된 트리 노드의 왼쪽 하위 트리를 스택에 밀어넣습니다
    5) Loop Back to (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
  • 취소회신하다