二叉树的前序遍历
题目
给你二叉树的根节点 root ,返回该二叉树的前序遍历序列。
思路:递归法
前序:根 -> 左 -> 右 路径收集
- 访问根节点
- 对左子树进行前序遍历(递归调用)
- 对右子树进行前序遍历(递归调用)
代码
public List<Integer> preorderTraversal(TreeNode root) {//前序遍历:根->左->右
List<Integer> res = new ArrayList<Integer>();//路径收集
if(root == null) return res;//不能为空
//根
res.add(root.val);
//左
List<Integer> left_list = preorderTraversal(root.left);
if(left_list != null) res.addAll(left_list);
//右
List<Integer> right_list = preorderTraversal(root.right);
if(right_list != null) res.addAll(right_list);
return res;
}//preorderTraversal
TreeNode
public class TreeNode {//LeetCode自定义的树结点
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}//class-Node