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
霧計算和邊緣計算對物聯網的意義何在?霧計算其響應更快,過濾信息,取決於網關靈活性,解決帶寬瓶頸和延遲問題霧計算將一些處理和資源置於雲的邊緣,它不是爲雲存儲和計算創建渠道,而是減小信息的發送下降對帶寬的需求,再在某些接入點進行聚合。經過使用這種分佈式策略,能夠下降成本並提升效率。