最近在看面试题的时候发现,一些基础的算法都记不住了,只是能大概说出个原理….为了加深记忆,这里对一些简单的算法题进行一个归纳。
下面的代码主要展示的是:二叉树的递归构建,先序、中序、后序遍历(递归和循环),层序遍历的Java语言实现
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
/*
Created by Flynnon on 17-2-25.
对二叉树的递归定义、前序、后序、中序、层序遍历方法的归纳
*/
/**
* 定义节点类
* 为了简单就不定义getter/setter方法了
*/
class Node {
public int value;
public Node left;
public Node right;
public Node() {
this(0);
}
public Node(int v) {
this.value = v;
this.left = null;
this.right = null;
}
}
/**
* 对二叉树进行操作的工具类
*/
class PrintBinaryTree {
//私有化构造函数
private PrintBinaryTree(){
throw new RuntimeException("该工具类不应该被实例化");
}
/**
* 层序遍历二叉树(每一行从左到右,整体上从上到下)
* 主要思路:利用队列先进先出的性质保存顺序
* @param root 要遍历的二叉树的根节点
*/
public static void levelTraversal(Node root) {
Queue<Node> q = new LinkedList<>();
q.add(root);
while (!q.isEmpty()) {
Node temp = q.poll();
if (temp != null) {
System.out.print(temp.value +