zoukankan      html  css  js  c++  java
  • LeetCode 94 二叉树中序遍历

    LeetCode 94 二叉树中序遍历

    题目描述:给定一个二叉树,返回它的中序遍历。

    执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
    内存消耗:38.2 MB, 在所有 Java 提交中击败了14.07%的用户

    递归

    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> result = new ArrayList<Integer>();
            dfs(root, result);
            return result;
        }
    
        public void dfs(TreeNode root, List<Integer> inorderTraversal) {
            if(root==null) {
                return;
            }
            else{
                //左、根、右
                dfs(root.left, inorderTraversal);
                inorderTraversal.add(root.val);
                dfs(root.right, inorderTraversal);
            }
            return;
        }
    }
    

    非递归: 使用栈

    1. 对于某个非空根节点,将其入栈
    2. 若根节点左子节点不为空,重复1步骤;否则进入3步骤
    3. 因为左子节点为空(无左子树/访问完毕),因此将栈顶根节点弹出并访问
    4. 若根节点有子节点不为空,重复1步骤;否则重复3步骤

    执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
    内存消耗:38 MB, 在所有 Java 提交中击败了44.37%的用户

    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> result = new ArrayList<Integer>();
            //使用栈进行非递归形式遍历
            List<TreeNode> stack = new ArrayList<TreeNode>();
            TreeNode node = root;
            while(!stack.isEmpty() || node!=null){
                if(node!=null) {
                    stack.add(node);
                    node = node.left;
                }
                else if(node==null) {
                    node = stack.get(stack.size()-1);
                    result.add(node.val);
                    stack.remove(stack.size()-1);
                    node = node.right;
                }
            }
            return result;
        }
    }
    
  • 相关阅读:
    “约瑟夫问题”实现代码
    “百钱买百鸡”问题
    链栈的表示与实现
    个人作品Demo3PLY文件的读取
    系统程序员成长计划容器与算法(一)(下)
    循环单链表的建立
    链式队列元素删除实现
    使用链栈实现数制的转换
    系统程序员成长计划容器与算法(二)(上)
    个人作品Demo4STL文件读取
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13529023.html
Copyright © 2011-2022 走看看