“什么序” 遍历,对当前节点的操作就在“什么位置”
前序遍历
public void preorderTraversal(TreeNode root) {
if (root != null) {
System.out.println(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
}
}
中序遍历
public void preorderTraversal(TreeNode root) {
if (root != null) {
preorderTraversal(root.left);
System.out.println(root.val);
preorderTraversal(root.right);
}
}
后序遍历
public void preorderTraversal(TreeNode root) {
if (root != null) {
preorderTraversal(root.left);
preorderTraversal(root.right);
System.out.println(root.val);
}
}
广度优先遍历
public void BF(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
System.out.println(node.val);
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
}
深度优先遍历
public void DF(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
System.out.println(node.val);
if (root.left != null) stack.push(root.left);
if (root.right != null) stack.push(root.right);
}
}