数据结构之二叉树的搭建

目录

1.基础搭建

 1.1基础代码

1.2 遍历代码

1.2.1递归代码解释


1.基础搭建

创建成员变量和成员方法

使用最low的方式搭建出来了简易二叉树

 

 1.1基础代码

public class TestBinaryTree {
    public class TreeNode {
        public char val;
        public TreeNode left;//左孩子
        public TreeNode right;//右孩子

        public TreeNode(char val) {
            this.val = val;
        }
    }

    public TreeNode createTree() {
        TreeNode A = new TreeNode('A');
        TreeNode B = new TreeNode('B');
        TreeNode C = new TreeNode('C');
        TreeNode D = new TreeNode('D');
        TreeNode E = new TreeNode('E');
        TreeNode F = new TreeNode('F');
        TreeNode G = new TreeNode('G');
        TreeNode H = new TreeNode('H');

        A.left = B;
        A.right = C;
        B.left = D;
        B.right = E;
        C.left = F;
        C.right = G;
        E.right = H;

        return A;
    }

1.2 遍历代码

二叉树一般使用递归来实现

//前序遍历
    public void preOrder(TreeNode root) {
        if (root == null) return;
        System.out.println(root.val + " ");
        preOrder(root.left);
        preOrder(root.right);
    }

    //中序遍历
    public void inOrder(TreeNode root) {
        if (root == null) return;
        inOrder(root.left);
        System.out.println(root.val + " ");
        inOrder(root.right);
    }

    //后序遍历
    public void postOrder(TreeNode root) {
        if (root == null) return;
        postOrder(root.left);
        postOrder(root.right);
        System.out.println(root.val + " ");
    }

下面开始详细解释递归代码,在此之前,再了解一下什么是前序遍历,中序遍历和后序遍历。

前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点--->根的左子树--->根的右子树。
中序遍历(Inorder Traversal)——根的左子树--->根节点--->根的右子树。
后序遍历(Postorder Traversal)——根的左子树--->根的右子树--->根节点。

1.2.1递归代码解释

以前序遍历为模板进行画图解释。

前序遍历代码的逻辑是:先判断root是否为空,为空直接返回,不为空,就去判断他的左子树是否为空,不为空就接着往下走,一直到为空就返回,然后再去判断右子树,右子树也按照这个逻辑往下走。

 

 

 

 D的左右子树全部走完,返回B,开始走B的右子树

 

 

 

 走到这里,A的左子树B,D,E,H已经全部走完,返回到A,准备开始走A的右子树

 

 

 此时A的右子树C,F,G已经全部走完,此时A已经完成前序遍历,顺序是ABDEHCFG

A的中序遍历和后序遍历也是同理,就不重复说了,可以自己试着画画

中序遍历顺序:DBEHACFG

后序遍历顺序:DHEBFGCA

这段的代码是测试代码

public class Test {
    public static void main(String[] args) {
        TestBinaryTree testBinaryTree = new TestBinaryTree();
        TestBinaryTree.TreeNode root = testBinaryTree.createTree();

        testBinaryTree.preOrder(root);//前
        System.out.println("========================");
        testBinaryTree.inOrder(root);//中
        System.out.println("========================");
        testBinaryTree.postOrder(root);//后

    }
}

看一下代码运行的结果

 

这就是二叉树的前序遍历递归代码的画图解释,完 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值