어떻게 두 갈래 나무를 복제합니까
5222 단어 두 갈래 나무
(1) 트리가 비어 있지 않으면 루트를 복사하고 이 두 노드를 각각QueueFormer,QueueCopy
(2) pFormer가 QueueFormer의 맞은편을 가리키고 pCopy가 QueueCopy의 팀 머리를 가리킨다.
(3) pFormer의 좌우 아이가 비어 있지 않으면 데이터를 복사하고 pCopy의 좌우 아이의 바늘을 수정하며 비공 노드를 모두 입구 조작한다.
(4) QueueFormer 및 QueueCopy 아웃소싱(헤더 노드 복제 완료)
(5) 대기열이 비어 있을 때까지 반복 (2) ~ (4)
(6) 헤더 포인터로 돌아가 복사를 완료합니다.
코드:
1 BinTree CopyTree(BinTree BT){
2 Queue QueueFormer;
3 Queue QueueCopy;
4 BinTree root=NULL;
5 init(QueueFomer);
6 init(QueueCopy);
7 if(BT!=NULL){
8 root=(BinTree)malloc(sizeof(BinTNode));
9 root->data=BT->data;
10 root->lchild=NULL;
11 root->rchild=NULL:
12 EnQueue(QueueFormer,BT);
13 EnQueue(QueueCopy,root);
14 }
15 while(!isEmptyQueue(QueueFormer)){
16 BinTree pFomer=QueueHeader(QueueFormer);
17 BinTree pCopy=QueueHeader(QueueCopy);
18 if(pFormer->lchild!=NULL)//
19 {
20 BinTree temp=(BinTree)malloc(sizeof(BinTNode));
21 temp->data=pFormer->lchild->data;
22 temp->lchild=NULL;
23 temp->rchild=NULL:
24 pCopy->lchild=temp;
25 EnQueue(QueueFormer,pFormer->lchild);
26 EnQueue(QueueCopy,temp):
27 }
28 if(pFormer->rchild!=NULL)//
29 {
30 BinTree temp=(BinTree)malloc(sizeof(BinTNode));
31 temp->data=pFormer->rchild->data;
32 temp->lchild=NULL;
33 temp->rchild=NULL:
34 pCopy->rchild=temp;
35 EnQueue(QueueFormer,pFormer->rchild);
36 EnQueue(QueueCopy,temp);
37 }
38 DeQueue(QueueFormer);
39 DeQueue(QueueCopy);
40 }
41 return root;
42 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 데이터 구조 2차원 트리의 실현 코드일.두 갈래 트리 인터페이스 2 노드 클래스 3. 두 갈래 나무 구현 이 글을 통해 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.