next

(leetcode)二叉树的前序遍历-c语言实现

筅森魡賤 提交于 2021-01-24 00:23:15
给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 前序遍历 前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。 用c语言来实现比较麻烦,现在大概介绍下我的思路,首先题目先要实现一个前序遍历,如果用递归,会比较简单,几行代码就可以实现,但是现在要求使用迭代发来实现。整个遍历过程是,访问根节点,然后遍历其左子树,然后再看左子树是否有其左孩子和右孩子。因为在查看左孩子之后,还要再查看根节点的右孩子,所以每次需要把根节点记录下来,需要存在栈中。所以我们需要实现一个栈,有压栈和出栈操作。另外我们需要一个链表来存放已经访问过的节点,到最后,需要把这些节点统一存储到一个数组中,然后返回。 下面来看下我码的代码 /* 链表节点 用于存储输出结果 */ struct listNode { int val; struct listNode * next; }; struct list { int count; struct listNode * head; struct listNode * tail; }; /* 栈节点,用于存储已经遍历过的根节点 */ struct StackNode { void * entry; struct StackNode * next;

Java高并发BlockingQueue重要的实现类二

为君一笑 提交于 2021-01-23 23:51:42
DelayQueue > DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。 > 存放到DelayDeque的元素必须继承Delayed接口。Delayed接口使对象成为延迟对象,它使存放在DelayQueue类中的对象具有了激活日期,该接口强制执行下列两个方法: CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法 getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,时间单位由单位参数指定 DelayQueue使用场景 关闭空闲链接。服务器中,有很多客户端链接,空闲一段时间后需要关闭。 缓存超过了缓存时间,就需要从缓存中移除。 DelayQueue超时订单处理案例 package com.rumenz.learn.delayqueue; import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit; //DelayQueue里面的元素必须实现Delayed public class Item<t> implements Delayed { private Long expireTime; private T data;

Vivado中debug用法

家住魔仙堡 提交于 2021-01-23 23:37:04
Vivado和ISE相比ChipScope已经大幅改变,很多人都不习惯。在ISE中称为ChipScope而Vivado中就称为in system debug。下面就介绍Vivado中如何使用debug工具。 Debug分为3个阶段: 1. 探测信号:在设计中标志想要查看的信号 2. 布局布线:给包含了debug IP的设计布局布线 3. 分析:上板看信号 一 探测信号 探测信号有2种方法一种是直接在HDL源代码中用(*mark_debug = “true”*)标识出要探测的信号 另一种是 在综合过后的网表文件中添加标志。 1 .在HDL源代码中添加标志 然后点击open Synthesized Design 然后点击Tools-> Set Up Debug 点击 Next 点击Add/Remove Nets 点击find会出来所有信号。如果需要添加debug的信号,从左边框中选择所需信号,点击 按 钮加到右边来。如果需要去除不需要的debug信号,从右边框中选择所需信号,点击 按钮就 去除了。选好信号之后,在右下角点击Ok按钮。 在此框中为所有debug信号选择时钟域,选择debug信号,右键选择Select Clock Domain。注意每一个时钟域对应一个单独的ILA 2.0core。 在此框中选择所需时钟,点击ok 点击next 然后继续下面的Implement 流程

《数据结构与算法分析》课程设计——贪吃蛇问题

Deadly 提交于 2021-01-23 22:42:01
中国矿业大学信控学院 /* 参考 */ https://blog.csdn.net/Fdog_/article/details/102625969 https://blog.csdn.net/DY_1024/article/details/78841757 一、问题描述 以数据结构思想设计实现贪吃蛇小游戏。 二、需求分析 首先需要考虑如何设计一个win运行窗口来实时显示结果 然后考虑到蛇的身子是一节一节的,此时最容易联想到的数据结构就是顺序表,链表,如果把蛇比做顺序表或者链表,在之后吃到食物的时候,身子肯定会变长,这就涉及到插入的操作,所以为了更高的效率,我们用链表实现我们的蛇的部分,最初我们把蛇身子按照四个结点打印在屏幕。 对于蛇的移动,在屏幕上面蛇的移动看起来是整个身子向前方平移一个单位,但是其原理是我们在屏幕的另一个地方把蛇从新打印一遍,又把之前的蛇身子去除掉。 对于食物的产生,随机的在地图中产生一个节点,在蛇的头坐标和食物的坐标重复的时候,食物消失,蛇的身子加长,也就是蛇的节点数增加一个。 蛇在其中的几种状态,正常状态:蛇头节点的坐标没有和墙的坐标以及自己身子的坐标重合, 被自己杀死:蛇头的坐标和蛇身子的坐标重合, 撞墙:蛇头的坐标和墙的坐标重合。 三、算法设计 1.相关变量。 1 1 .相关变量。 2 int JudgeSum = 0 ; // 判断是否加快 3 int

Nginx跳转配置

丶灬走出姿态 提交于 2021-01-23 21:15:30
1.携带目录调转到后端,后端无目录,location配置如下   例子: i2.jusdacfj.com/ideas_edi/——10.0.2.137:7040/10.0.2.138:7040   location ^~/ideas_edi/ { ##携带"/"     proxy_pass http://edi1/; ##携带"/"     proxy_redirect off;     proxy_set_header Host $remote_addr;     proxy_set_header X-Real-IP $remote_addr;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;     proxy_max_temp_file_size 0;     proxy_connect_timeout 300;     proxy_send_timeout 300;     proxy_read_timeout 300;     proxy_buffer_size 4k;     proxy_buffers 4

jQuery选择器总结(选择器+元素筛选)

痴心易碎 提交于 2021-01-23 13:01:00
文章目录 一.jQuery 选择器 1.基本选择器 2.层级选择器 3.过滤选择器 3.1基本过滤选择器 3.2内容过滤选择器 3.3属性过滤选择器 3.4可见性过滤选择器 3.5状态过滤选择器 4.表单选择器 二.jQuery元素筛选所用的一些方法 一.jQuery 选择器 1.基本选择器 #ID 选择器:根据 id 查找标签对象 .class 选择器:根据 class 查找标签对象 element 选择器:根据标签名查找标签对象 * 选择器:表示任意的,所有的元素 selector1,selector2 组合选择器:合并选择器 1,选择器 2 的结果并返回 还有一种是没有逗号的,如 $("div.one") 表示选取 class="one" 的<div>,而 $("div,.one") 表示的是选取所有<div>和所有 class="one" 的元素 示例: $ ( "#lastname" ) //选取id="lastname" 的元素 $ ( ".intro" ) //选取class="intro" 的所有元素 $ ( "p" ) //选取所有 <p> 元素 $ ( "*" ) //选取所有元素 $ ( "h1,div,p" ) //选取所有 <h1>、<div> 和<p> 元素 $ ( "div.one" ) //选取class="one"的<div> $ ( "div,

Linux---who命令学习

别说谁变了你拦得住时间么 提交于 2021-01-23 11:40:35
who命令 获取正在登录系统的用户 使用Linux的who命令 第一个参数book代表用户名,第二个参数tty7代表终端名,第三个参数代表时间,第四个参数代表用户的登录地址。 阅读手册 使用命令读手册 $ man who 可以知道who这个命令从 /var/run/utmp 和 /var/log/wtmp 两个文件中获取数据, 再通过命令,查找关于 “utmp” 的信息 $ man -k utmp -k的意思是根据关键字查找 $man 5 utmp 我们查询到一些关于utmp结构体中的元素,比如ut_user用户名字、ut_line用户设备、ut_time登录时间等。 who命令的工作流程       打开utmp    +----> 读取记录 ------ +    |         |    +-------显示记录   |       关闭utmp <------ + who命令的编写---版本1 1 #include <stdio.h> 2 #include <utmp.h> 3 #include <fcntl.h> 4 #include <unistd.h> 5 #include <time.h> 6 7 void show_info( struct utmp * utbufp); 8 int main() 9 { 10 struct utmp current

vue+elementui后台管理快捷代码片段

烈酒焚心 提交于 2021-01-23 07:03:42
Form < el-form labelPosition ="right" labelWidth ="10%" size ="small" :model ="list" ref ="ruleForm" :rules ="rules" > < el-form-item label ="商家类型" > < el-select v-model ="traderType" @change ="change" > < el-option v-for ="item in Options" :key ="item.value" :label ="item.label" :value ="item.value" > </ el-option > </ el-select > </ el-form-item > < el-form-item label ="商家名称" prop ="name" > < el-input style ="width:50%" v-model ="list.name" ></ el-input > </ el-form-item > </ el-form > View Code Table < el-table :data ="list" width ="100%" align ="center" > < el-table-column label ="ID"

Java高并发BlockingQueue重要的实现类

偶尔善良 提交于 2021-01-23 02:43:13
ArrayBlockingQueue > 有界的阻塞队列,内部是一个数组,有边界的意思是:容量是有限的,必须进行初始化,指定它的容量大小,以先进先出的方式存储数据,最新插入的在对尾,最先移除的对象在头部。 public class ArrayBlockingQueue<e> extends AbstractQueue<e> implements BlockingQueue<e>, java.io.Serializable { /** 队列元素 */ final Object[] items; /** 下一次读取操作的位置, poll, peek or remove */ int takeIndex; /** 下一次写入操作的位置, offer, or add */ int putIndex; /** 元素数量 */ int count; /* * Concurrency control uses the classic two-condition algorithm * found in any textbook. * 它采用一个 ReentrantLock 和相应的两个 Condition 来实现。 */ /** Main lock guarding all access */ final ReentrantLock lock; /** Condition for waiting

蓝桥杯刷题 -- 第五届蓝桥杯

最后都变了- 提交于 2021-01-22 09:03:55
题头:本内容所有题面都来自博客:https://blog.csdn.net/ryo_218/article/details/79704030在此感谢! 1、标题:啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。 注意:答案是一个整数。请通过浏览器提交答案。 不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。 思路: 勉强说是贪心吧。。i从1开始,j从i+1开始保证符合题意就好。 #include <iostream> #include <cstdio> using namespace std; int main() { for ( int i = 1 ; i < 100 ; ++ i) for ( int j = i+ 1 ; j < 100 ; ++ j) if (( 23 *i+ 19 *j) == 823 ) { printf( " %d\n " , i); } return 0 ; } View Code 答案是 11 2、标题:切面条 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢? 答案是个整数