二叉树遍历和延伸
作者:互联网
目录
之前为了求快,认为递归和动态规划是一类的,导致做了不少递归的题只能想到思路,但就是没法代码实现出来!!!
现在学习二叉树,我觉得对学习递归真的很有帮助!
二叉树的基础:遍历二叉树
二叉树遍历是基础,如果我们不能遍历二叉树,又如何对二叉树的节点进行操作呢?
二叉树的节点:
/**
* @author keboom
* @date 2021/4/30
*/
public class Node {
public int value;
public Node left;
public Node right;
public Node(int data) {
this.value = data;
}
/**
* 10
* 12 15
* 4 7 5 18
* @return
*/
public static Node getTestTree() {
Node node10 = new Node(10);
Node node5 = new Node(5);
Node node15 = new Node(15);
Node node4 = new Node(4);
Node node7 = new Node(7);
Node node12 = new Node(12);
Node node18 = new Node(18);
node10.left = node12;
node10.right = node15;
node12.left = node4;
node12.right = node7;
node15.left = node5;
node15.right = node18;
return node10;
}
}
getTestTree
此方法为了方便测试,不用理会。
递归遍历
public void preOrderRecur(Node head) {
if (head == null) {
return;
}
System.out.println(head.value + " ");
preOrderRecur(head.left);
preOrderRecur(head.right);
}
public void inOrderRecur(Node head) {
if (head == null) {
return;
}
inOrderRecur(head.left);
System.out.println(head.value + " ");
inOrderRecur(head.right);
}
public void posOrderRecur(Node head) {
if (head == null) {
return;
}
posOrderRecur(head.left);
posOrderRecur(head.right);
System.out.println(head.value + " ");
}
以上分别为先序,中序和后序遍历。
我认为这三种遍历的区别:
-
先序遍历:先打印,再向下递归
-
中序和后序:先递归到最下面,再打印
只看简单的遍历太简单不直观,请看下面的几道题
接下里的几道题目在求解过程中我会跟二叉树的遍历做一些联系,我认为做这些联系是有助于解题的
标签:Node,head,遍历,二叉树,延伸,null,edgeMap,节点 来源: https://www.cnblogs.com/keboom/p/14780452.html