지그재그로 위에서 아래로 두 갈래 나무를 인쇄하다

2135 단어

지그재그로 위에서 아래로 두 갈래 나무를 인쇄하다


생각
  • 두 개의 창고를 통해 현재 줄과 다음 줄의 데이터를 교체하여 저장합니다
  • 두 변수를 통해 창고의 현재 인덱스와 다음 창고의 인덱스를 기록합니다
  • 두 창고 저장 노드의 순서는 반대로 하나는 왼쪽에서 오른쪽으로, 하나는 오른쪽에서 왼쪽으로 한다
  • 창고가 선진적으로 나온 특징을 생각하다..

  • 참고:
  • 경계 조건의 처리
     void printFontNode(TreeNode*pRoot){
    
    if (pRoot == nullptr) {
        return;
    }
    std::stackpStacks[2];
    int current = 0;
    int next = 1;
    while (!pStacks[0].empty()||!pStacks[1].empty()) {
        TreeNode*pNode = pStacks[current].top();
        pStacks[current].pop();
        printf("%d",pNode->val);
        if (current == 0) {
            if (pNode->leftNode != nullptr) {
                pStacks[next].push(pNode->leftNode);
            }
            if (pNode->rightNode != nullptr) {
                pStacks[next].push(pNode->rightNode);
            }
        }else{
            if (pNode->rightNode != nullptr) {
                pStacks[next].push(pNode->rightNode);
            }
            if (pNode->leftNode != nullptr) {
                pStacks[next].push(pNode->leftNode);
            }
        }
        if (pStacks[current].empty()) {
            printf("
    "); next = 1-next; current = 1-current; } } }

  • 정수 그룹을 입력하여 두 갈래 검색 트리의 뒷부분을 훑어보았는지 판단하십시오

  • 먼저 수조의 마지막 원소, 두 갈래 나무의 뿌리 노드 원소를 얻는다
  • 원소가 뿌리 노드보다 클 때까지 왼쪽을 두루 돌아다닌다
  • 오른쪽을 이어서 두루 돌아다녔다.원소가 루트 노드의 원소보다 작으면 두 갈래 검색 트리가 충족되지 않습니다..
  • 그리고 좌우면의 작은 자나무로 나누어 두 갈래 수색 나무가 충족되는지 확인한다

  • 직접 코드
      // 
            bool verifySequenceOf(int sequence[],int length)
        {
        if (sequence == nullptr || length<=0) {
            return false;
        }
        // 
        int root = sequence[length-1];
        
        int i = 0;
        // 。 root 
        for (; iroot) {
                break;
            }
        }
        // 。 false
        int j = i;
        for (; j0) {
            left = verifySequenceOfBST(sequence, i);
        }
        
        bool right = true;
        if (i

    좋은 웹페이지 즐겨찾기