二叉树 学习笔记

2022-08-24 07:58:27

二叉树 学习笔记

一、树简介

在这里插入图片描述

二、二叉树简介

二叉树的概念

在这里插入图片描述
在这里插入图片描述

三、二叉树遍历

(一)遍历方式

在这里插入图片描述

(二)思路分析

在这里插入图片描述

(三)代码实现

1.创建节点——HeroNode

HeroNode 类

package com.example.demotest.treee;import lombok.Data;/**
 * 先创建 HeroNode 节点
 *
 * @author wanglin
 * @version 1.0
 * @date 2022-03-08 周二
 */@DatapublicclassHeroNode{privateint no;private String name;private HeroNode left;private HeroNode right;publicHeroNode(int no, String name){super();this.no= no;this.name= name;}@Overridepublic StringtoString(){return"HeroNode{"+"no="+ no+", name='"+ name+'\''+'}';}/**
     * 前序遍历--根左右
     */publicvoidpreOrder(){//先输出父节点
        System.out.println(this);//递归向左子树前序遍历if(this.left!= null){this.left.preOrder();}//递归向右子树前序遍历if(this.right!= null){this.right.preOrder();}}/**
     * 中序遍历--左根右
     */publicvoidinfixOrder(){if(this.left!= null){this.left.infixOrder();}//输出父节点
        System.out.println(this);if(this.right!= null){this.right.infixOrder();}}/**
     * 后序遍历--左右根
     */publicvoidpostOrder(){if(this.left!= null){this.left.postOrder();}if(this.right!= null){this.right.postOrder();}
        System.out.println(this);}}

2.定义二叉树——BinaryTree

BinaryTree 类

package com.example.demotest.treee;/**
 * 定义 BinaryTree 二叉树
 *
 * @author wanglin
 * @version 1.0
 * @date 2022-03-08 周二
 */publicclassBinaryTree{private HeroNode root;publicvoidsetRoot(HeroNode root){this.root= root;}/**
     * 前序遍历
     */publicvoidpreOder(){if(this.root!= null){this.root.preOrder();}else{
            System.out.println("二叉树为空,无法遍历");}}/**
     * 中序遍历
     */publicvoidinfixOrder(){if(this.root!= null){this.root.infixOrder();}else{
            System.out.println("二叉树为空,无法遍历");}}/**
     * 后序遍历
     */publicvoidpostOrder(){if(this.root!= null){this.root.postOrder();}else{
            System.out.println("二叉树为空,无法遍历");}}}

3.测试

BinaryTreeDemo 类

package com.example.demotest.treee;/**
 * @author wanglin
 * @version 1.0
 * @date 2022-03-08 周二
 */publicclassBinaryTreeDemo{publicstaticvoidmain(String[] args){//先需要创建一个二叉树
        BinaryTree binaryTree=newBinaryTree();//创建需要的节点
        HeroNode root=newHeroNode(1,"松江");
        HeroNode node2=newHeroNode(2,"吴用");
        HeroNode node3=newHeroNode(3,"卢俊义");
        HeroNode node4=newHeroNode(4," 林冲");//这里手动创建该二叉树,后面可以用递归方式创建二叉树
        root.setLeft(node2);
        root.setRight(node3);
        node3.setRight(node4);
        binaryTree.setRoot(root);//测试--前序遍历//1,2,3,4
        System.out.println("前序遍历");
        binaryTree.preOder();

        System.out.println("中序遍历");//2,1,3,4
        binaryTree.infixOrder();//2,4,3,1
        System.out.println("后序遍历");
        binaryTree.postOrder();}}

测试结果:
在这里插入图片描述

关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。

  • 作者:王林-wlin
  • 原文链接:https://blog.csdn.net/qq_45912025/article/details/123351931
    更新时间:2022-08-24 07:58:27