首页 > 其他 > 详细

【LeetCode】144. Binary Tree Preorder Traversal

时间:2019-11-04 12:07:49      阅读:117      评论:0      收藏:0      [点我收藏+]

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实现

 

【LeetCode】144. Binary Tree Preorder Traversal

原文:https://www.cnblogs.com/yongh/p/11791177.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!