Binary Tree Inorder Traversal LeetCode Java

来源:互联网 发布:数据库管理系统例子 编辑:程序博客网 时间:2024/05/19 00:55

Given a binary tree, return the inorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1    \     2    /   3

return [1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

Check code in detail below:

 Key to solve: Stack
    In_Order: left -> mid -> right 
    Push all the left subtree node into Stack, when we reach bottom of left subtree
    As a result, the top element of Stack will be left most bottom node of Tree,
    It is time to pop elemnt from stack and add into result list,
    After left subTree -> Continue traverse right subTree, until stack is empty

public static ArrayList<Integer> inorderTraversal(TreeNode root) {        ArrayList<Integer> res=new ArrayList<Integer>();        if(root==null) return  res;        Stack<TreeNode> stack=new Stack<TreeNode>();        while(!stack.isEmpty() || root!=null){            //push all the left node of tree into stack first            if(root!=null){                stack.push(root);                root=root.left;            }else{                //reach the bottom of left subtree, pop out from stack                root=stack.pop();                //add into result list                res.add(root.val);                root=root.right;            }        }        return res;    }


0 0