두 갈래 트리 앞 순서 반복--[비귀속] C 언어 창고 구현
2609 단어 두 갈래 나무류
1. 문제 설명
두 갈래 트리를 지정하고 노드 값의 순서를 되돌려줍니다. ---비귀속 실현 사용[예제]
입력: [1,null, 2,3]
1
\
2
/
3
출력: [1,2,3]
2. 문제 풀이 사고방식
비귀속 전차례 반복 사고방식:step1: 하나의 결점을 훑어보고 (출력하거나 결과 그룹에 저장) [뿌리]에 접근한 다음 창고를 눌러서 왼쪽 트리를 훑어보십시오 [좌]
step2: 왼쪽 트리가 지나가면 창고 꼭대기에서 이 노드를 꺼내서 오른쪽 아이를 가리키며 step1 단계를 계속합니다
step3: 모든 결점에 접근할 때, 즉 마지막으로 접근한 트리 노드가 비어 있고 창고도 비어 있을 때, 알고리즘이 끝납니다
3. 알고리즘 실현
1. 창고 데이터 구조 구축 및 이차 트리 데이터 구조 정의
#include
#include
#include
/** **/
struct TreeNode
{
int val;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
/** **/
#define MAXSIZE 10000
#define OVERFLOW 0
#define error -65530
/** **/
typedef struct Sq_stack
{
struct TreeNode data[MAXSIZE];
int top;
}Sq_stack;
/** -- **/
void initStack(Sq_stack *S)
{
S = (Sq_stack*)malloc(sizeof(Sq_stack));
if(!S)
exit(OVERFLOW);//
S->top = 0; // 0
}
/** e**/
bool Push(Sq_stack *S, struct TreeNode* e)
{
/** : **/
if( S->top == MAXSIZE-1 )
return false;
S->top++;
S->data[S->top] = *e;
return true;
}
/** , **/
struct TreeNode* Pop(Sq_stack *S)
{
/** : **/
if(S->top == 0)
return NULL;
struct TreeNode* e = (struct TreeNode*)malloc(sizeof(struct TreeNode));
*e = S->data[S->top];
S->top--;
return e;
}
bool isEmptyStack( Sq_stack *S )
{
return S->top == 0?true:false;
}
2. 전차 역행 비귀속 실현 알고리즘
/****************************************
Author:tmw
date:2018-5-7
****************************************/
/**
*returnSize:
--- *result , *returnSize
**/
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
if( root == NULL ) return NULL;
/** **/
int* result = (int*)malloc(1000*sizeof(int));
int len=0;
/** **/
Sq_stack* stk = (Sq_stack*)malloc(sizeof(Sq_stack));
initStack(stk);
while( root || !isEmptyStack(stk) )
{
while( root )
{
/** , , **/
result[len++] = root->val; /** **/
Push(stk,root);
root = root->left; /** **/
}
if( !isEmptyStack(stk) )
{
root = Pop(stk);
root = root->right;/** **/
}
}
*returnSize = len;
return result;
}
4. 실행 결과
leetcode accept
꿈은 있어야지 만일 이루어진다면 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
19 - 두 갈래 나무의 거울함수를 완성하고 두 갈래 트리를 입력하십시오. 이 함수는 거울을 출력합니다. 예를 들어 8 --- 두 갈래 트리 A/\6 10/\/\5 7 9 11 ----------------------------- 8 --- 거...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.