1. 程式人生 > 其它 >flink的jar包和伺服器的包衝突解決方案

flink的jar包和伺服器的包衝突解決方案

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        /**
         * 方法1:遞迴
         */
        /*
        List<Integer> res = new ArrayList<>();
        dfs(root, res);
        return res;
        */
        /**
         *  方法2:非遞迴
         */
        List
<Integer> res = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); TreeNode pre = null; // 用於記錄前一次訪問的節點 while (!stack.isEmpty() || root != null) { while (root != null) { stack.push(root); root = root.left; } root
= stack.peek(); // 如果右節點為空 或右節點訪問過 if (root.right == null || root.right == pre) { res.add(root.val); // 此時可以訪問根結點 stack.pop(); pre = root; root = null; // 此時下一輪迴圈不要將左子樹壓棧,直接判斷棧頂元素 }else { root
= root.right; // 先不出棧 把它右節點入棧 } } return res; /** * 方法3:非遞迴的另一種方法 * 修改前序遍歷程式碼中,節點寫入結果連結串列的程式碼:將插入隊尾修改為插入隊首 * 修改前序遍歷程式碼中,每次先檢視左節點再檢視右節點的邏輯:變為先檢視右節點再檢視左節點 */ /* List<Integer> res = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); while (!stack.isEmpty() || root != null) { while (root != null) { res.add(0,root.val); // 取根節點的值,插入list最後邊 stack.push(root); root = root.right; // 遍歷右子樹 } root = stack.pop(); root = root.left; // 遍歷左子樹 } return res; */ } private void dfs(TreeNode root, List<Integer> res) { if (root == null) return; dfs(root.left, res); // dfs(root.right, res);// res.add(root.val);// } }