package com.model.tree;
import java.util.ArrayDeque;
import java.util.Deque;
/**
* @Description:测试类
* @Author: 张紫韩
* @Crete 2021/8/17 21:50
* 树的遍历
*/
public class TreeDemo02 {
public static void main(String[] args) {
TreeNode root = new TreeNode(0);
TreeNode left = new TreeNode(1);
TreeNode right = new TreeNode(2);
TreeNode left_left = new TreeNode(3);
TreeNode right_right = new TreeNode(4);
root.left=left;
root.right=right;
left.left=left_left;
right.right=right_right;
// preOrder(root);
// midOrder(root);
// postOrder(root);
sequenceOrder(root);
}
// 层序遍历
public static void sequenceOrder(TreeNode root){
if (root==null){
return;
}
Deque<TreeNode> deque=new ArrayDeque<>();
deque.add(root);
while (!deque.isEmpty()){
TreeNode cur = deque.pop();
System.out.println(cur);
if (cur.left!=null){
deque.add(cur.left);
}
if (cur.right!=null){
deque.add(cur.right);
}
}
}
// 先序遍历方式
public static void preOrder(TreeNode root){
if (root==null){
return;
}
System.out.println(root);
preOrder(root.left);
preOrder(root.right);
}
public static void midOrder(TreeNode root){
if (root==null){
return;
}
midOrder(root.left);
System.out.println(root);
midOrder(root.right);
}
public static void postOrder(TreeNode root){
if (root==null){
return;
}
postOrder(root.left);
postOrder(root.right);
System.out.println(root);
}
}