一,构建二叉树
- 封装二叉树结点
/**
* 二叉树结点
*/
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
public TreeNode(int val) {
this.val = val;
}
}
- 构建一颗二叉树
public class Main1 {
public static void main(String[] args) {
//构建二叉树
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
node1.left = node2;
node1.right = node3;
node2.left = node4;
node2.right = node5;
node3.right = node6;
//firstRoot(node1);
//midRoot(node1);
lastRoot(node1);
}
}
二,遍历
先序遍历:(先根次序遍历,根左右)
//先序遍历
public static void firstRoot(TreeNode root){
if (root == null) return;
System.out.println(root.val);
firstRoot(root.left);//左子树向下递归遍历
firstRoot(root.right);//右子树向下递归遍历
}
中序遍历:(中根次序遍历,左根右)
//中序遍历
public static void midRoot(TreeNode root){
if (root == null) return;
midRoot(root.left);//左子树向下递归遍历
System.out.println(root.val);
midRoot(root.right);//右子树向下递归遍历
}
后序遍历:(先根次序遍历,左右根 )
//后序遍历
public static void lastRoot(TreeNode root){
if (root == null) return;
lastRoot(root.left);//左子树向下递归遍历
lastRoot(root.right);//右子树向下递归遍历
System.out.println(root.val);
}