Algorithm
// https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/?utm_source=LCUS&utm_medium=ip_redirect&utm_campaign=transfer2china
/**
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
*/
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function(root) {
if(!root) return 0;
if(!root.left && !root.right) return 1
return 1 + Math.max(maxDepth(root.left), maxDepth(root.right))
};
// 使用递归是很好实现这个功能的。
// 下面我们用迭代的方式来解决这个问题
var maxDepth = function(root) {
if(!root) return 0;
if(!root.left && !root.right) return 1
// 层次遍历法 BFS
let cur = root;
const queue = [root, null]
let depth = 1
// 利用null来做分界线,然后判断一些queue长度,来看是否还有子节点。
// 利用了队列的特性,先进在后面,两头都可以出
while ((cur = queue.shift()) !== undefined) {
if(cur === null) {
if(queue.length === 0) return depth
depth ++
queue.push(null)
continue
}
const l = cur.left
const r = cur.right
if(l) queue.push(l)
if(r) queue.push(r)
}
return depth
};
review
web端实现一个远程桌面,进行集成测试,
https://www.yuque.com/artist/f2etest/intro,
阿里的开源软件
涉及技术
1: RDP 协议 (https://zh.wikipedia.org/wiki/%E9%81%A0%E7%AB%AF%E6%A1%8C%E9%9D%A2%E5%8D%94%E5%AE%9A)
2:canvas 绘制
3:webscoket通信 (https://zh.wikipedia.org/wiki/WebSocket)
4: 远程桌面网关apache Guacamole (https://guacamole.apache.org/)
基础流程是:浏览器加载html后,使用websocket 与server 进行通信,server 有一套程序来解析rdp数据,将实际机上屏幕数据,分成不同的块,转换成前端可以理解的位图信息。使用websocket 发送给前端,前端
使用canvas的drawimage API来进行绘制,对多个图片进行绘制拼接后,就形成了完成的“远程桌面”。
来让这一整套走通是使用了Apache Guacamole的技术 ,该技术主要由https://enterprise.glyptodon.com/公司贡献。
tip
平常还是要多关注使用的第三方库或者框架的版本升级信息,这两天做react项目升级,其中react15,升级到react16.8,react部分还好,主要就是createClass,以及不能使用ref="11111"这样的方式,别的没有太多问题,然后router从3到4的时候,大功能上的坑也好改,有个细节的地方,报错也不报,但是一致影响,排错很久,才知道,props.location上,router3的时候,有一个query属性,会把url上,?的后面的给解析成对象,ruoter4却没有了。只有一个search了
share
当有复杂运算,会阻塞当前js线程影响ui渲染的时候,可以使用这个api,Web Worker,Web Worker为Web内容在后台线程中运行脚本提供了一种简单的方法。线程可以执行任务而不干扰用户界面。
https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers