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

来源:互联网 发布:网络连环夺宝 编辑:程序博客网 时间:2024/05/17 09:32

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?


java实现:

方法一:

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */import java.util.ArrayList;public class Solution {    ArrayList<Integer> out =new ArrayList<Integer>();    public ArrayList<Integer> preorderTraversal(TreeNode root) {        if(root==null){            return out;        }                out.add(root.val);        if(root.left!=null){            preorderTraversal(root.left);        }                if(root.right!=null){            preorderTraversal(root.right);        }        return out;    }}


方法二:

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


0 0