LeetCode 145. Binary Tree Postorder Traversalnode
后序遍历二叉树git
Given a binary tree, return the postorder traversal of its nodes' values.github
Example:web
Input: [1,null,2,3]算法
1 \ 2 / 3
Output: [3,2,1]
Follow up: Recursive solution is trivial, could you do it iteratively?编程
迭代版本数据结构
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); Stack<TreeNode> s = new Stack<>(); TreeNode p = root; // 记录上一次被访问的节点 TreeNode q = null; do{ //先找到最左下角的节点,记录沿途的位置 while(p!=null){ s.push(p); p = p.left; } q = null; while(!s.isEmpty()){ p = s.pop(); //BCA的访问次序,若是上一次访问了C,那么A就是该访问的节点 if(p.right == q){ result.add(p.val); q = p; }else{ //二次进栈 s.push(p); p = p.right; break; } } }while(!s.isEmpty()); return result; } }
The Key To Accelerating Your Coding Skills
主题为提高编码技能的关键,首先提出得到解决问题的能力比开发一些应用更加剧要。数据结构和算法
起步阶段的学生,最重要的是关注细节
根据错误信息调试很重要,
随着经验增加,能够学会解读错误信息,抽取相关问题细节,从错误问题中学习经验,不要只是修复完就算了。
刚开始可能须要问别人,后面能够google或者追踪代码。
编程是终身学习的过程,有经验的工程师会为了解决未解决的问题而不断去学习,只等待是无用的。分布式
进入下个阶段前,你有以下的特征:
你见过了足够多的错误了,而且它们再也不困扰着你
你已经熟悉用google搜寻答案了
你能够将你的代码遵循必定规则应用到其余的地方了post
最使人困扰的阶段,根据指导,没有现成的方法解决你的问题
困扰的缘由是:
编码速度比上个阶段慢了10-20倍
剩余的日子,天天都要突破你的限制,不要待在温馨区
关于web开发,有两个转折点会一同到来
不要作个CRUD BOY,试试整合第三方的库
学好数据结构和算法
它们是编程王国的钥匙
招聘主管喜欢扎实基础的算法和开发工程师
不要追寻热点技术,基础扎实学起来都快
变得依赖本身,不要等着别人来帮助
写代码时候,想一想以前是否写过相似的,能否借鉴
视频吞掉了细节,查看API文档更加快速
指导阶段,作一些没有指导的任务
尽量少的使用指导
文档假设你已是度过拐点的开发者,适量阅读遵循github文档对你更有帮助
重点关注重要且频繁使用的事情
要明白这是困难的阶段,放轻松你本身
若是你缺少自信,找那些度过拐点的人聊聊,坚持学习,但不要太大负担,一天不要超过6小时,不然会加长这个阶段的时间。
最好获取自信的方法是解决困惑你的问题,若是你挣扎了15个小时,那么以后就会平静下来
若是5分钟或者5小时没思路,你会有困扰,可是你成功的次数多了,你的自信心会迅速增加
拐点度过以后是接受如下的事实:
软件开发是持续的学习(还得学……)
若是你以为本身对全部都掌握了,那么应该解决更复杂的问题了
使用VSCode来开发Java
雾计算和边缘计算对物联网的意义何在?雾计算其响应更快,过滤信息,取决于网关灵活性,解决带宽瓶颈和延迟问题雾计算将一些处理和资源置于云的边缘,它不是为云存储和计算创建渠道,而是减小信息的发送下降对带宽的需求,再在某些接入点进行聚合。经过使用这种分布式策略,能够下降成本并提升效率。