주어진 깊이에서 노드의 신속한 이진 트리 목록

Le Khanh Vinh

이진 트리에 대한 Swift 알고리즘을 작성하고 있습니다. 내 목표는 만드는 것입니다 노드 목록 에서 특정 깊이 같은

func listNodeAt(_n: Int) --> [T] {

}

여기 내 트리 클래스입니다

public class BinaryTreeNode<T:Comparable> {

    //Value and children vars
    public var value:T
    public var leftChild:BinaryTreeNode?
    public var rightChild:BinaryTreeNode?
    public weak var parent:BinaryTreeNode?

    //Initialization
    public convenience init(value: T) {
        self.init(value: value, left: nil, right: nil, parent:nil)
    }

    public init(value:T, left:BinaryTreeNode?, right:BinaryTreeNode?, parent:BinaryTreeNode?) {
        self.value = value
        self.leftChild = left
        self.rightChild = right
        self.parent = parent
    }
}

노드의 깊이를 계산하는 도우미 함수를 구축했습니다.

//Depth
    public func depth() -> Int {
        guard var node = parent else {
            return 0
        }

        var depth = 1
        while let parent = node.parent {
            depth = depth + 1
            node = parent
        }

        return depth
    }

원하는 기능을 어떻게 얻을 수 있습니까?

사친 바스
func listNodeAt(_ n: Int) -> [T] {
    return getElementsAt(n, node: self)
}

private func getElementsAt(_ n: Int, node: BinaryTreeNode<T>, traversingDepth: Int = 0) -> [T] {
        var array = Array<T>()
        if traversingDepth < n {
            if let left = node.leftChild {
                array = array + getElementsAt(n, node: left, traversingDepth: traversingDepth + 1)
            }
            if let right = node.rightChild {
                array = array + getElementsAt(n, node: right, traversingDepth: traversingDepth + 1)
            }
        } else if traversingDepth == n {
            array.append(node.value)
        }
        return array
    }

이것이 해결책 중 하나입니다. 여기서 self가 루트 노드라고 가정합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이진 트리에서 동일한 깊이의 노드 연결

분류에서Dev

이진 트리가 주어지면 각 깊이에서 모든 노드의 연결 목록을 생성하는 알고리즘을 설계합니다.

분류에서Dev

이진 트리의 각 노드에 수정 된 목록 전달

분류에서Dev

이중 연결 목록에서 주어진 노드 뒤의 노드 제거

분류에서Dev

유향 그래프의 깊이 : 주어진 노드에서 k 거리에있는 노드 찾기

분류에서Dev

주어진 깊이의 완전한 이진 트리를 재귀 적으로 생성

분류에서Dev

이진 트리에서 중첩 된 목록의 목록 변환

분류에서Dev

이진 트리에서 노드의 후속 노드를 찾기위한 코드의 세분화 오류

분류에서Dev

완벽한 이진 트리가 주어지면 이진 트리의 대체 레벨 노드를 뒤집습니다.

분류에서Dev

주어진 숫자의 합을 이진 목록 생성

분류에서Dev

주어진 노드 뒤에 이중 연결 목록에 노드 삽입

분류에서Dev

주어진 노드의 속성에 목록의 값 중 하나가 있는지 확인하십시오.

분류에서Dev

목록에서 주어진 길이의 순환 목록을 만드는 방법

분류에서Dev

주어진 매개 변수에 의한 각도 + 이온 목록 분할기

분류에서Dev

주어진 노드에서 트리의 부모 노드 경로 찾기

분류에서Dev

연결된 목록에서 노드 주소가 주어진 노드의 주소를 얻습니다.

분류에서Dev

C의 이진 주소에서 주어진 비트 변경

분류에서Dev

HashMap 키와 주어진 목록 사이의 교차 목록

분류에서Dev

스칼라에서 이진 트리의 최대 깊이

분류에서Dev

여러 자식이있는 트리에서 루트에서 주어진 노드까지의 경로 인쇄

분류에서Dev

주어진 목록에 필요한 포트 범위

분류에서Dev

한 자식 노드의 이진 트리 삭제

분류에서Dev

Python의 다른 목록에 대한 조건이 주어진 목록에 액세스

분류에서Dev

이진 트리에서 가장 깊은 리프 노드의 합계를 찾으십니까?

분류에서Dev

잎에서 이진 트리 깊이

분류에서Dev

이진 검색 트리에서 다양한 유형의 노드 계산

분류에서Dev

이진 트리에서 두 노드 사이의 거리 찾기

분류에서Dev

이진 검색 트리에서 이상한 노드 삭제

분류에서Dev

range (N) 대신 주어진 목록에 대한 Cython 효율적인 사이클 'for'

Related 관련 기사

  1. 1

    이진 트리에서 동일한 깊이의 노드 연결

  2. 2

    이진 트리가 주어지면 각 깊이에서 모든 노드의 연결 목록을 생성하는 알고리즘을 설계합니다.

  3. 3

    이진 트리의 각 노드에 수정 된 목록 전달

  4. 4

    이중 연결 목록에서 주어진 노드 뒤의 노드 제거

  5. 5

    유향 그래프의 깊이 : 주어진 노드에서 k 거리에있는 노드 찾기

  6. 6

    주어진 깊이의 완전한 이진 트리를 재귀 적으로 생성

  7. 7

    이진 트리에서 중첩 된 목록의 목록 변환

  8. 8

    이진 트리에서 노드의 후속 노드를 찾기위한 코드의 세분화 오류

  9. 9

    완벽한 이진 트리가 주어지면 이진 트리의 대체 레벨 노드를 뒤집습니다.

  10. 10

    주어진 숫자의 합을 이진 목록 생성

  11. 11

    주어진 노드 뒤에 이중 연결 목록에 노드 삽입

  12. 12

    주어진 노드의 속성에 목록의 값 중 하나가 있는지 확인하십시오.

  13. 13

    목록에서 주어진 길이의 순환 목록을 만드는 방법

  14. 14

    주어진 매개 변수에 의한 각도 + 이온 목록 분할기

  15. 15

    주어진 노드에서 트리의 부모 노드 경로 찾기

  16. 16

    연결된 목록에서 노드 주소가 주어진 노드의 주소를 얻습니다.

  17. 17

    C의 이진 주소에서 주어진 비트 변경

  18. 18

    HashMap 키와 주어진 목록 사이의 교차 목록

  19. 19

    스칼라에서 이진 트리의 최대 깊이

  20. 20

    여러 자식이있는 트리에서 루트에서 주어진 노드까지의 경로 인쇄

  21. 21

    주어진 목록에 필요한 포트 범위

  22. 22

    한 자식 노드의 이진 트리 삭제

  23. 23

    Python의 다른 목록에 대한 조건이 주어진 목록에 액세스

  24. 24

    이진 트리에서 가장 깊은 리프 노드의 합계를 찾으십니까?

  25. 25

    잎에서 이진 트리 깊이

  26. 26

    이진 검색 트리에서 다양한 유형의 노드 계산

  27. 27

    이진 트리에서 두 노드 사이의 거리 찾기

  28. 28

    이진 검색 트리에서 이상한 노드 삭제

  29. 29

    range (N) 대신 주어진 목록에 대한 Cython 효율적인 사이클 'for'

뜨겁다태그

보관