如下图,链表的每一个节点是由data 和next 指针构成。
树的每个节点,每个点都是由两个next 指针构成。
下面开始模拟构建树的节点
先创建 二叉树对象 类 TreeNode class
public class TreeNode{
private Integer data;
private TreeNode left; //左节点
private TreeNode right; //右节点
public TreeNode(Integer data){
this.data = data;
}
//set get 方法
public Integer getData(){
return data;
}
public void setData(Integer data){
this.data = data;
}
public TreeNode getLeft(){
return left;
}
public void setData(TreeNode left){
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
上边内容是用来创建 TreeNode 对象,main测试及两种遍历在下面。
下面,创建 MainTest 来测试一下
public static void main(String[] args) {
//创建7个节点
TreeNode root = 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);
TreeNode node7 = new TreeNode(7);
//将这些节点够成一个二叉树
root.setLeft(node2);
root.setRight(node3);
node2.setLeft(node4);
node2.setRight(node5);
node3.setLeft(node6);
node3.setRight(node7);
//下面是测试一下这两种 遍历方式 广度遍历和深度遍历
System.out.println("按照广度遍历:");
printByLayer(root); //输出结果: 1 2 3 4 5 6 7
System.out.println("深度优先遍历的三种方式:")
System.out.println("先序遍历:");
pre_print(root);
System.out.println("");
System.out.println("中序遍历:");
mid_print(root);
System.out.println("");
System.out.println("后序遍历:");
last_print(root);
}//mian
/
/
/
public static void pre_print(TreeNode root) {
if (root != null) { //节点不空,才输出
//根
System.out.print(root.getData());
System.out.print(" ");
//左
if (root.getLeft() != null) {
pre_print(root.getLeft());
}
//右
if (root.getRight() != null) {
pre_print(root.getRight());
}
}
}//pre_print()
public static void mid_print(TreeNode root) {
if (root != null){
//左
if (root.getLeft()!=null){
mid_print(root.getLeft());
}
//根
System.out.print(" ");
System.out.print(root.getData());
//右
if (root.getRight()!=null){
mid_print(root.getRight());
}
}
}//mid_print()
public static void last_print(TreeNode root){
if (root!=null){
//左
if (root.getLeft()!=null){
last_print(root.getLeft());
}
//右
if (root.getRight()!=null){
last_print(root.getRight());
}
//根
System.out.print(root.getData());
System.out.print(" ");
}
}//last_print()



