leetcode Binary Tree Preorder Traversal

来源:互联网 发布:大数据 应用 编辑:程序博客网 时间:2024/05/22 12:38

题目链接

这个题目居然让我写了一个小时。哎

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

当然在这其中我还写了一个中序遍历

class TreeNode {      int val;      TreeNode left;      TreeNode right;      TreeNode(int x) { val = x; }  }public class Solution {    public List<Integer> preorderTraversal(TreeNode root) {        Stack<TreeNode> myStack=new Stack<TreeNode>();        List<Integer> result=new LinkedList<Integer>();        if(root==null)        {            return result;        }        TreeNode temp=root;        while(temp!=null)        {            myStack.push(temp);            temp=temp.left;        }        while(!myStack.isEmpty())        {            temp=myStack.pop();             result.add(temp.val);            if(temp.right!=null)            {                temp=temp.right;                while(temp!=null)                {                    myStack.push(temp);                    temp=temp.left;                }            }        }        return result;    }}
0 0