其他分享
首页 > 其他分享> > 二叉树遍历和延伸

二叉树遍历和延伸

作者:互联网

目录

之前为了求快,认为递归和动态规划是一类的,导致做了不少递归的题只能想到思路,但就是没法代码实现出来!!!

现在学习二叉树,我觉得对学习递归真的很有帮助!

二叉树的基础:遍历二叉树

二叉树遍历是基础,如果我们不能遍历二叉树,又如何对二叉树的节点进行操作呢?

二叉树的节点:

/**
 * @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