首页 > 代码库 > [Leetcode] Binary Tree Preorder Traversal

[Leetcode] Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes‘ values.

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

   1         2    /   3

 

return [1,2,3].

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

[Thoughts]

常见面试题,主要考两个东西:

  1.什么是先序遍历

  2.Java中Stack的使用

 

[Code]

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<Integer> preorderTraversal(TreeNode root) {        List<Integer> result = new ArrayList<Integer>();                if(root == null)            return result;                Stack<TreeNode> stack = new Stack<TreeNode>();        stack.push(root);        while(!stack.isEmpty()){            TreeNode temp = stack.pop();            result.add(temp.val);                        if(temp.right != null){                stack.push(temp.right);            }            if(temp.left != null){                stack.push(temp.left);            }        }        return result;    }}

 

[Leetcode] Binary Tree Preorder Traversal