二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。
如下便是一棵二叉树:
二叉树的前序遍历:
1. 遍历根节点
2. 如果存在左子树,先序遍历左子树
3. 如果存在右子树,先序遍历右子树
二叉树结构定义:
class TreeNode {
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;
}
}
实现方法1:递归
public void preOrder(TreeNode root) {
// 递归结束的条件
if(root==null) return;
// 将当前节点的值加入列表
nodesVal.add(root.val);
// 如果存在左孩子,遍历左孩子
if(root.left!=