大话数据结构—二叉树(十)
2019-02-20 本文已影响2人
浅浅星空
1.二叉树3种递归遍历
public class Tree {
// 前序遍历
public static void preOrderSearch(Node root) {
if (root == null) {
return;
}
System.out.print(root.data);
preOrderSearch(root.left);
preOrderSearch(root.right);
}
// 中序遍历
static public void midOrderSearch(Node root) {
if (root == null) {
return;
}
midOrderSearch(root.left);
System.out.print(root.data);
midOrderSearch(root.right);
}
// 后序遍历
public static void postOrderSearch(Node root) {
if (root == null) {
return;
}
postOrderSearch(root.left);
postOrderSearch(root.right);
System.out.print(root.data);
}
static class Node {
Object data;
Node left;
Node right;
public Node(Object data) {
this.data = data;
}
}
public static void main(String[] args) {
Node node = new Node(0);
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
node.left = node1;
node.right = node2;
node1.left = node3;
node1.right = node4;
Tree tree = new Tree();
tree.preOrderSearch(node);
System.out.println("-----------");
tree.midOrderSearch(node);
System.out.println("-----------");
tree.postOrderSearch(node);
}
}
2.层级遍历
public class LevelTravel {
public static void main(String[] args) {
Node root = new Node(10);
Node left = new Node(4);
Node right = new Node(7);
Node node1 = new Node(3);
Node node2 = new Node(6);
root.left = left;
root.right = right;
left.left = node1;
left.right = node2;
search(root);
}
public static void search(Node root) {
if (root == null) {
return;
}
LinkedList<Node> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
Node temp = queue.poll();
System.out.println(temp.data);
if (temp.left != null) {
queue.offer(temp.left);
}
if (temp.right != null) {
queue.offer(temp.right);
}
}
}
static class Node {
Node left;
Node right;
Object data;
public Node(Object data) {
this.data = data;
}
}
}