c语言刷 DFS题记录
144. 二叉树的前序遍历
- /**
- * Definition for a binary tree node.
- * struct TreeNode {
- * int val;
- * struct TreeNode *left;
- * struct TreeNode *right;
- * };
- */
- /**
- * Note: The returned array must be malloced, assume caller calls free().
- */
- // 递归
- void Preorder(struct TreeNode* root, int* array, int* returnSize)
- {
- if (root == NULL) {
- return;
- }
- array[(*returnSize)++] = root->val;
- Preorder(root->left, array, returnSize);
- Preorder(root->right, array, returnSize);
- }
- int* preorderTraversal(struct TreeNode* root, int* returnSize)
- {
- int *res = (int *)malloc(sizeof(int) * 100);
- *returnSize = 0;
- Preorder(root, res, returnSize);
- return res;
- }
145. 二叉树的后序遍历
- /**
- * Definition for a binary tree node.
- * struct TreeNode {
- * int val;
- * struct TreeNode *left;
- * struct TreeNode *right;
- * };
- */
- /**
- * Note: The returned array must be malloced, assume caller calls free().
- */
- void Postorder(struct TreeNode* root, int* array, int* returnSize)
- {
- if (root == NULL) {
- return;
- }
- Postorder(root->left, array, returnSize);
- Postorder(root->right, array, returnSize);
- array[(*returnSize)++] = root->val;
- }
- int* postorderTraversal(struct TreeNode* root, int* returnSize)
- {
- int *res = (int *)malloc(sizeof(int) * 100);
- *returnSize = 0;
- Postorder(root, res, returnSize);
- return res;
- }
105. 从前序与中序遍历序列构造二叉树
- /**
- * Definition for a binary tree node.
- * struct TreeNode {
- * int val;
- * struct TreeNode *left;
- * struct TreeNode *right;
- * };
- */
- struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize)
- {
- if (preorder == NULL || inorder == NULL) {
- return NULL;
- }
- if (preorderSize == 0 || inorderSize == 0) {
- return NULL;
- }
- if (preorderSize != inorderSize) {
- return NULL;
- }
- struct TreeNode *res = (struct TreeNode *)malloc(sizeof(struct TreeNode));
- int rootVal = preorder[0];
- int leftLen = 0;
- for (int i = 0; i < inorderSize; i++) {
- if (rootVal == inorder[i]) {
- leftLen = i;
- break;
- }
- }
- int rightLen = inorderSize - leftLen - 1;
- res->val = rootVal;
- res->left = buildTree(&preorder[1], leftLen, inorder, leftLen);
- res->right = buildTree(&preorder[leftLen + 1], rightLen, &inorder[leftLen + 1], rightLen);
- return res;
- }
106. 从中序与后序遍历序列构造二叉树
- /**
- * Definition for a binary tree node.
- * struct TreeNode {
- * int val;
- * struct TreeNode *left;
- * struct TreeNode *right;
- * };
- */
- struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize)
- {
- if (inorder == NULL || postorder == NULL) {
- return NULL;
- }
- if (inorderSize == 0 || postorderSize == 0) {
- return NULL;
- }
- if (inorderSize != postorderSize) {
- return NULL;
- }
- struct TreeNode* res = (struct TreeNode *)malloc(sizeof(struct TreeNode));
- int rootVal = postorder[postorderSize - 1];
- int leftNum = 0;
- int rightNum = 0;
- for (int i = 0; i < inorderSize; i++) {
- if (rootVal == inorder[i]) {
- leftNum = i;
- break;
- }
- }
- rightNum = inorderSize - leftNum - 1;
- res->val = rootVal;
- res->left = buildTree(inorder, leftNum, postorder, leftNum);
- res->right = buildTree(&inorder[leftNum + 1], rightNum, &postorder[leftNum], rightNum);
- return res;
- }
c语言刷 DFS题记录的更多相关文章
- C语言刷数组题记录
讲解:https://mp.weixin.qq.com/s/weyitJcVHBgFtSc19cbPdw 二分法: 704. 二分查找 int search(int* nums, int numsSi ...
- c语言刷 队列题记录
622. 设计循环队列 https://blog.csdn.net/Galaxy_n/article/details/115978544 typedef struct { int *arrs; int ...
- c语言刷 链表题记录
61. 旋转链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode * ...
- 用PHP语言刷OJ题
平常在学校都是用C,C++,Java来刷OJ题,把AC的题用不同的语言再AC一次,基本相当于翻译而已.看到学校的OJ支持提交PHP代码,于是尝试了一下. 首先,得会使用PHP,但是你如果在看这篇博客, ...
- 8.20~8.25刷散题记录 By cellur925
记录一些散题 / 价值不大但还是想记下来的题目 / 没正八经写博客的题目 8.24 Luogu P1508 沙雕题数字三角形的二维升级版,但是注意阅读理解,李大水牛从桌子最后一行下侧开始吃,而本题是自 ...
- c语言刷 设计题合计
355. 设计推特 #define MAX_LEN 512 struct User { int userId; int followee[MAX_LEN]; // 散列表,0/1,1表示这个user被 ...
- PE刷题记录
PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...
- SPOJ 刷题记录
按点赞数降序 297 二分 #include<bits/stdc++.h> using namespace std; #define fi first #define se second ...
- 刷题记录:[SUCTF 2019]CheckIn
目录 刷题记录:[SUCTF 2019]CheckIn 一.涉及知识点 1.利用.user.ini上传\隐藏后门 2.绕过exif_imagetype()的奇技淫巧 二.解题方法 刷题记录:[SUCT ...
随机推荐
- Flink 如何通过2PC实现Exactly-once语义 (源码分析)
Flink通过全局快照能保证内部处理的Exactly-once语义 但是端到端的Exactly-once还需要下游数据源配合,常见的通过幂等或者二阶段提交这两种方式保证 这里就来分析一下Sink二阶段 ...
- checklist 编写指南
checklist 编写工具 checklist文档格式推荐使用思维导图.比如 MindMaster 和 processon.我喜欢用这些平台或者软件的思维导图大纲模式来编写 checklist. c ...
- 类加载器(JVM)
一.JVM概述 JVM是java是二进制字节码的运行环境 特点: 一次编译,到处运行(跨平台) 自动内存管理 自动垃圾回收功能 常见的JVM Sun Classic VM:世界上第一款商用的java虚 ...
- 计算机开放电子书 2021 RC2
下载方式 pip install CDNDrive # 或 # pip install git+https://github.com/apachecn/CDNDrive cdrive download ...
- EKS助力小白实践云原生——通过k8s部署wordpress应用
目前云原生在大厂已经有了充分的实践,也逐渐向小厂以及非互联网公司推广.适逢12月20日,腾讯云原生[燎原社]精心打造了云原生在线技术工坊,让零基础的同学也能快速入门和实践 Docker 和 Kuber ...
- C字符串倒置-中部对称
问题如图 Code #include<stdio.h> #include<string.h> #define MAX_LENGTH 10//最大字符串长度 void inver ...
- div 根据内容自适应内容
转载请注明来源:https://www.cnblogs.com/hookjc/ #header{ MARGIN: 0px; BORDER: 0px; BACKGROUND: #ccd2de; WIDT ...
- element-ui 使用 Select 组件给 value 属性绑定对象类型
qq_36437172 2020-06-28 22:38:49 778 收藏 分类专栏: element-ui 文章标签: element-ui Select 组件 value 属性 绑定 对象类 ...
- 使用 Element UI Select 组件的 value-key 属性,让绑定值可以为一个对象
EsunR 2019-11-07 12:14:42 12264 收藏 6 分类专栏: Vue 文章标签: element-ui 版权 当我们使用 Elemet UI 的选择组件进行多选时,Sele ...
- Javascript疑问【长期更新】
1.插入 Javacript 的正确位置是? 答:<body> 部分和 <head> 部分均可. 2.外部脚本必须包含 <script> 标签吗? 答:外部脚本不能 ...