欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 遞歸tree json

吉茹定1年前10瀏覽0評論

C語言是一種廣泛應用的編程語言,在各個領域都有它的應用。而遞歸是C語言中的一項重要的技巧,可以使程序更加簡潔、高效。在處理復雜數據結構時,例如樹和JSON,遞歸也是非常有用的。

樹是一種以分層方式表示數據的數據結構,其中每個節點都可以有若干個子節點。C語言可以使用結構體來表示一棵樹:

struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};

對于一棵樹來說,遞歸可以幫助我們快速地遍歷每個節點。例如,我們可以使用遞歸的方式來實現先序遍歷:

void preOrder(struct TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val);
preOrder(root->left);
preOrder(root->right);
}
}

JSON是一種輕量級的數據交換格式,經常在Web編程中使用。我們可以使用C語言來解析JSON:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
void parse_json(json_t* root) {
if (json_is_object(root)) {
const char* key;
json_t* value;
json_object_foreach(root, key, value) {
printf("key=%s\n", key);
parse_json(value);
}
} else if (json_is_array(root)) {
size_t i;
json_t* value;
json_array_foreach(root, i, value) {
parse_json(value);
}
} else if (json_is_string(root)) {
const char* str = json_string_value(root);
printf("str=%s\n", str);
} else if (json_is_number(root)) {
int num = json_number_value(root);
printf("num=%d\n", num);
}
}
int main() {
const char* jsonstr = "{ \"name\": \"Tom\", \"age\": 18, \"friends\": [\"John\", \"Mary\", \"Mike\"] }";
json_error_t error;
json_t* root = json_loads(jsonstr, 0, &error);
if (root != NULL) {
parse_json(root);
json_decref(root);
}
return 0;
}

在這個例子中,我們使用了jansson庫來解析JSON。遞歸的方式可以幫助我們對JSON進行深度遍歷,從而進行數據解析。