• 二叉树的遍历


    //144. Binary Tree Preorder Traversal (Medium)
        public List<Integer> preorderTraversal(TreeNode root){
            List<Integer> ret = new ArrayList<Integer>();
            if(root==null){
                return ret;
            }
            Stack<TreeNode> stack = new Stack<>();
            stack.push(root);
            while(!stack.isEmpty()){
                TreeNode node = stack.pop();
                ret.add(node.value);
                if(node.right!=null){
                    stack.add(node.right);
                }
                if(node.left!=null){
                    stack.add(node.right);
                }
            }
            return ret;
        }
        
        //145. Binary Tree Postorder Traversal (Medium)
        //前序遍历为 root -> left -> right,后序遍历为 left -> right -> root。可以修改前序遍历成为 root -> right -> left,那么这个顺序就和后序遍历正好相反。
        public List<Integer> postorderTraversal(TreeNode root){
            List<Integer> ret = new ArrayList<Integer>();
            if(root==null){
                return ret;
            }
            Stack<TreeNode> stack = new Stack<TreeNode>();
            stack.push(root);
            while(!stack.isEmpty()){
                TreeNode node = stack.pop();
                ret.add(node.value);
                if(root.left!=null){
                    stack.push(node.left);
                }
                if(root.right!=null){
                    stack.push(node.right);
                }
            }
            Collections.reverse(ret);
            return ret;
        }
        //94. Binary Tree Inorder Traversal (Medium)
        public List<Integer> inorderTraversal(TreeNode root){
            List<Integer> ret = new ArrayList<Integer>();
            Stack<TreeNode> stack = new Stack<TreeNode>();
            TreeNode curr = root;
            while(curr!=null || !stack.isEmpty()){
                while(curr!=null){
                    stack.push(curr);
                    curr = curr.left;
                }
                curr = stack.pop();
                ret.add(curr.value);
                curr = curr.right;
            }
            return ret;
        }
  • 相关阅读:
    Python字符串
    MySQL触发器
    MySQL 1418报错解决办法
    数据库下载
    补码与反码
    二、八、十六进制之间的转换
    this 指向
    作用域 var 词法分析 arguments
    事件绑定的3种方式
    清浮动方法小结
  • 原文地址:https://www.cnblogs.com/helloworldmybokeyuan/p/13446425.html
Copyright © 2020-2023  润新知