50218. Convert a Tree to a List

難度:3/5

Second Try: 3/5 Used Time: 10:15

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "treeToList.h"

// struct treenode {
// int value;
// struct treenode *left;
// struct treenode *right;
// };
//
// struct list {
// struct treenode *head;
// struct treenode *tail;
// };
//
// typedef struct treenode TreeNode;
// typedef struct list List;

void insert_tail(List* l, TreeNode* root){
root->left = NULL, root->right = NULL;
if(l->head == NULL){
l->head = root;
l->tail = root;
}
else{
l->tail->left = root;
l->tail = root;
}
}

void solve(TreeNode* root, List* rtv){
if(root == NULL) return;
int val = root->value;
TreeNode *l = root->left, *r = root->right;
insert_tail(rtv, root);

if(val % 2 == 1){
solve(r, rtv);
solve(l, rtv);
}
else{
solve(l, rtv);
solve(r, rtv);
}
}

List treeToListFunc(TreeNode* root){
List rtv;
rtv.head = NULL;
rtv.tail = NULL;
solve(root, &rtv);
return rtv;
}


50218. Convert a Tree to a List
https://aaronlin1229.github.io/judgegirl_50218/
Author
Akizumi
Posted on
July 17, 2023
Licensed under