LeetCode OJ --问题与解答 Binary Tree Preorder Traversal

来源:互联网 发布:什么加湿器好用 知乎 编辑:程序博客网 时间:2024/06/07 13:02
题目


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

二叉树前序遍历。


思路


1 基础的基础。递归和迭代写法都要回。

2 递归的时候,不要忘记函数内是两个参数。(不要和伪代码部分搞混)。


public class Solution {    public ArrayList<Integer> preorderTraversal(TreeNode root) {        ArrayList<Integer> ans =  new ArrayList<Integer>();        useme(root,ans);        return ans;    }        public void useme(TreeNode root , ArrayList<Integer> ans){        if(root ==null){            return ;        }        ans.add(root.val);        useme(root.left,ans);        useme(root.right,ans);    }}

3 迭代的时候,使用stack。 java中 LinkedList 含有queue 和stack共同部分,所以以后都用 LinkedList 来使用。当做stack使用时,方法是push pop

4 前序的迭代相对简单。只需要stack之后,右边的先入栈即可。


public class Solution {    public ArrayList<Integer> preorderTraversal(TreeNode root) {        ArrayList<Integer> ans =  new ArrayList<Integer>();        if(root==null){            return ans;        }        LinkedList<TreeNode> stack = new LinkedList<TreeNode>();        stack.push(root);        while(!stack.isEmpty()){            TreeNode temp = stack.pop();            ans.add(temp.val);            if(temp.right!=null){                stack.push(temp.right);            }            if(temp.left!=null){                stack.push(temp.left);            }        }        return ans;    }}









0 0
原创粉丝点击