LeetCode-Binary Tree Inorder Traversal

来源:互联网 发布:序列模式数据库 编辑:程序博客网 时间:2024/05/16 08:41

和前序几乎一模一样,递归里面就是add的时间在进入左右子之间

非递归的就是把add那句话放进了else中,即当前node为null,pop stack返回上一层时加入这个node

递归:

public class Solution {    public List<Integer> inorderTraversal(TreeNode root) {        List<Integer> list = new ArrayList<Integer> ();        helper(list, root);        return list;    }    public void helper( List<Integer> list, TreeNode node){        if( node == null )            return;        helper(list, node.left);        list.add(node.val);        helper(list, node.right);        return;    }}


非递归:

public class Solution {    public List<Integer> inorderTraversal(TreeNode root) {        List<Integer> list = new ArrayList<Integer> ();        Stack<TreeNode> stack = new Stack<TreeNode>();        while ( !stack.isEmpty() || root != null){            if ( root != null){                stack.push(root);                root = root.left;            }            else{                root = stack.pop();                list.add(root.val);                root = root.right;            }                    }        return list;    }}


0 0
原创粉丝点击