zoukankan      html  css  js  c++  java
  • 94. Binary Tree Inorder Traversal

        /*
         * 94. Binary Tree Inorder Traversal 
         * 2015.11.21 By Mingyang
         * 跟preorder一样的dfs,不过是每次pop出来的时候记在小本本上,也就是记在list里面 中序遍历迭代解法
         * 用栈先把根节点的所有左孩子都添加到栈内, 然后输出栈顶元素,再处理栈顶元素的右子树
         */
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> list = new ArrayList<Integer>();
            if (root == null)
                return list;
            Stack<TreeNode> stack = new Stack<TreeNode>();
            TreeNode p = root;
            while (!stack.isEmpty() || p != null) {
                if (p != null) {
                    stack.push(p);
                    p = p.left;
                } else {
                    TreeNode t = stack.pop();
                    list.add(t.val);
                    p = t.right;
                }
            }
            return list;
        }
        public List<Integer> inorderTraversal1(TreeNode root) {
            List<Integer> res = new ArrayList<Integer>();
            dfs(root, res);
            return res;
        }
        public void dfs(TreeNode root, List<Integer> res) {
            if (root == null)
                return;
            dfs(root.left, res);
            res.add(root.val);
            dfs(root.right, res);
        }
  • 相关阅读:
    Day 03
    Day 02
    Day 01
    re正则表达四
    python学习05之数据可视化
    python学习04之柱形图和热图
    python学习03之线图表
    python的学习02之数据处理
    python的学习01之csv文件处理
    中国大学排名实例
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5496823.html
Copyright © 2011-2022 走看看