LintCode第68题-二叉树的前序遍历,第67题-二叉树的后序遍历
第66题:
描述
给出一棵二叉树,返回其节点值的前序遍历
- 首个数据为根节点,后面接着是其左儿子和右儿子节点值,"#"表示不存在该子节点。
- 节点数量不超过20
-
样例 1:
输入:
二叉树 = {1,2,3}
输出:
[1,2,3]
解释:
1/ \2 3
它将被序列化为{1,2,3}前序遍历
样例 2:
输入:
二叉树 = {1,#,2,3}
输出:
[1,2,3]
解释:
1\2/3
它将被序列化为{1,#,2,3}前序遍历
代码如下:
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: A Tree
* @return: Preorder in ArrayList which contains node values.
*/
List<Integer> preOrderList=new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
// write your code here
if(root==null)
{
return new ArrayList<>();
}
preOrderList.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return preOrderList;
}
}
第68题:
描述
给出一棵二叉树,返回其节点值的后序遍历
- 首个数据为根节点,后面接着是其左儿子和右儿子节点值,"#"表示不存在该子节点。
- 节点数量不超过20
样例 1:
输入:
二叉树 = {1,2,3}
输出:
[2,3,1]
解释:
1/ \2 3
它将被序列化为{1,2,3}之后进行后序遍历
样例 2:
输入:
二叉树 = {1,#,2,3}
输出:
[3,2,1]
解释:
1\2/3
它将被序列化为{1,#,2,3}之后进行后序遍历
代码如下:
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: A Tree
* @return: Postorder in ArrayList which contains node values.
*/
List<Integer> postOrderList=new ArrayList<>();
public List<Integer> postorderTraversal(TreeNode root) {
// write your code here
if(root==null)
{
return new ArrayList<>();
}
postorderTraversal(root.left);
postorderTraversal(root.right);
postOrderList.add(root.val);
return postOrderList;
}
}