• LeetCode 94: Binary Tree Inorder Traversal


    /**
     * 94. Binary Tree Inorder Traversal
     * 1. Time:O(n)  Space:O(n)
     * 2. Time:O(n)  Space:O(n)
     * 3. Time:O(n)  Space:O(1)
     */
    
    // 1. Time:O(n)  Space:O(n)
    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> res = new LinkedList<>();
            inorderHelper(root,res);
            return res;
        }
        
        public void inorderHelper(TreeNode root, List<Integer> res){
            if(root!=null){
                if(root.left!=null)
                    inorderHelper(root.left,res);
                res.add(root.val);
                if(root.right!=null)
                    inorderHelper(root.right,res);
            }
        }
    }
    
    // 2. Time:O(n)  Space:O(n)
    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> res = new LinkedList<>();
            Stack<TreeNode> s = new Stack<>();
            TreeNode cur = root;
            while(cur!=null || !s.empty()){
                while(cur!=null){
                    s.push(cur);
                    cur = cur.left;
                }
                cur = s.pop();
                res.add(cur.val);
                cur = cur.right;
            }
            return res;
        }
    }
    
    // 3. Time:O(n)  Space:O(1)
    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> res = new LinkedList<>();
            TreeNode cur = root;
            TreeNode prev;
            while(cur!=null){
                if(cur.left==null){
                    res.add(cur.val);
                    cur = cur.right;
                }else{
                    prev = cur.left;
                    while(prev.right!=null)
                        prev = prev.right;
                    prev.right = cur;
                    TreeNode tmp = cur;
                    cur = cur.left;
                    tmp.left = null;
                }
            }
            return res;
        }
    }
    
  • 相关阅读:
    已经连接到空闲例程的解决方法
    SQLplus命令中导出数据
    Oracle设置时间格式
    Oracle热备份
    多元化控制文件
    ORA28000: the account is locked
    Windows 7 如何删除 Windows.old 文件夹
    Linux常用命令之文件命令
    Linux 常用命令之进程管理
    Python中的apply,filter和map函数
  • 原文地址:https://www.cnblogs.com/AAAmsl/p/12785806.html
Copyright © 2020-2023  润新知