LeetCode--No.144--Binary Tree Preorder Traversal

来源:互联网 发布:linux 守护进程启动 编辑:程序博客网 时间:2024/05/22 17:00

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].

二叉树的先序遍历

递归算法:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    List<Integer> res = new ArrayList<Integer>();    public List<Integer> preorderTraversal(TreeNode root) {        if(root == null){            return res;        }        else {            res.add(root.val);            preorder(root);        }        return res;    }    public void preorder(TreeNode node){        if (node.left == null && node.right == null){            return;        }        else{            if (node.left != null){                res.add(node.left.val);                preorder(node.left);            }            if (node.right != null ) {                res.add(node.right.val);                preorder(node.right);            }        }    }}
非递归算法:
用栈

代码来自:http://www.programcreek.com/2012/12/leetcode-solution-for-binary-tree-preorder-traversal-in-java/

侵删!!

/** * 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) {        List<Integer> returnList = new ArrayList<Integer>();                if (root == null)            return returnList;        Stack<TreeNode> stack = new Stack<TreeNode>();        stack.push(root);                while(!stack.empty()){            TreeNode n = stack.pop();            returnList.add(n.val);                        if(n.right != null)                stack.push(n.right);            if(n.left != null)                stack.push(n.left);        }        return returnList;    }}



0 0
原创粉丝点击