Difficulty: Medium

 More:【目录】LeetCode Java实现

Description

https://leetcode.com/problems/binary-tree-preorder-traversal/

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

Example:

Input: [1,null,2,3]
   1
    \
     2
    /
   3

Output: [1,2,3]

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

Intuition

 Stack

 

Solution

    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<Integer>();
        Stack<TreeNode> stk = new Stack<>();
        while(root!=null || !stk.isEmpty()){
            while(root!=null){
                list.add(root.val);
                stk.push(root);
                root=root.left;
            }
            root=stk.pop().right;
        }
        return list;
    }

OR

    public List<Integer> preorderTraversal(TreeNode root) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        Stack<TreeNode> stk = new Stack<>();
        stk.push(root);
        while(!stk.isEmpty()){
            TreeNode node = stk.pop();
            if(node==null)
                continue;
            list.add(node.val);
            stk.push(node.right);
            stk.push(node.left);
        }
        return list;
    }

  

 

Complexity

Time complexity : O(n)

Space complexity : O(nlogn)

 

 

 More:【目录】LeetCode Java实现

 

相关文章:

  • 2021-08-04
  • 2021-05-11
  • 2021-06-28
猜你喜欢
  • 2021-10-30
  • 2021-06-01
  • 2021-12-25
  • 2021-10-24
  • 2021-11-03
  • 2021-08-16
相关资源
相似解决方案