import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){
val = x;
}
}
public class Tree {
public static void main(String[] args) {
TreeNode t = new TreeNode(1);
t.left = new TreeNode(2);
t.right = new TreeNode(3);
t.left.left = new TreeNode(5);
System.out.println("树的先序遍历:");
preOrder(t);
System.out.println("树的中序遍历:");
inOrder(t);
System.out.println("树的后序遍历:");
postOrder(t);
System.out.println("树的层次遍历:");
levelOrder(t);
}
//先序遍历 中左右
public static void preOrder(TreeNode treeNode){
if (treeNode == null){
return;
}
System.out.println(treeNode.val);
preOrder(treeNode.left);
preOrder(treeNode.right);
}
//中序遍历 左中右
public static void inOrder(TreeNode treeNode){
if (treeNode == null){
return;
}
inOrder(treeNode.left);
System.out.println(treeNode.val);
inOrder(treeNode.right);
}
//后序遍历 左右中
public static void postOrder(TreeNode treeNode){
if (treeNode == null){
return;
}
postOrder(treeNode.left);
postOrder(treeNode.right);
System.out.println(treeNode.val);
}
//层次遍历
public static void levelOrder(TreeNode treeNode){
if (treeNode == null){
return;
}
//用来保存遍历的节点
List<TreeNode> treeNodes = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(treeNode);
while (!queue.isEmpty()){
TreeNode head = queue.poll();
if (head.left != null){
queue.offer(head.left);
}
if (head.right != null){
queue.offer(head.right);
}
treeNodes.add(head);
}
for (TreeNode node:treeNodes){
System.out.println(node.val);
}
}
}
树的遍历(先序/中序/后序/层次)
最新推荐文章于 2024-08-15 14:47:41 发布