二叉树遍历和延伸

Posted KeBoom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树遍历和延伸相关的知识,希望对你有一定的参考价值。

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

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

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

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

二叉树的节点:

/**
 * @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 + " ");
    }

以上分别为先序,中序和后序遍历。

我认为这三种遍历的区别:

  • 先序遍历:先打印,再向下递归

  • 中序和后序:先递归到最下面,再打印

只看简单的遍历太简单不直观,请看下面的几道题

接下里的几道题目在求解过程中我会跟二叉树的遍历做一些联系,我认为做这些联系是有助于解题的

以上是关于二叉树遍历和延伸的主要内容,如果未能解决你的问题,请参考以下文章

一文搞定二叉树---由二叉树到贪心算法

通过遍历序列构造二叉树(扩展二叉树的先序先序和中序后序和中序层序和中序)附可执行完整代码

二叉树进阶题------前序遍历和中序遍历构造二叉树;中序遍历和后序遍历构造二叉树

二叉树进阶题------前序遍历和中序遍历构造二叉树;中序遍历和后序遍历构造二叉树

根据二叉树的前序遍历和中序遍历构建二叉树的c语言完整代码

二叉树的遍历方法之层序-先序-中序-后序遍历的简单讲解和代码示例