二叉树的实现及其遍历

二叉树的遍历及其应用C/C++代码实现 二叉树的存储结构: 顺序存储:只适合完全二叉树。 链式存储:利用这种结点结构所得二叉树的存储结构分别称之为二叉链表和三叉链表。 二叉树的遍历: 规定先左后右,按照根结点的访问次序可分为先(根) 序遍历、中(根) 序遍历和后(根) 序遍历。 先序遍历序列:ABCDEGF 中序遍历序列:CBEGDFA 后序遍历序列:CGEFDBA 注意: 另外由二叉树的先序序列和中序序列,或由其后序序列和中序序列均能唯一地确定一棵二叉树。 但先序序列和后序序列不能唯一确定一棵二叉树。 遍历的应用: 1,建立二叉链表 2,复 阅读详情

递归搞得我怀疑人生,写个二叉树缓解一下心情......

满二叉树:

包含2^k-1个节点

每层的节点数为2^(k-1)

完全二叉树:

除了最后一层所有层的节点都是满的

具有n个节点的完全二叉树的深度为log2n+1

1、二叉树的顺序存储

使用数组来记录二叉树的所有节点,存储情况如下图所示:


代码如下:

class ArrayBinTree<T> {
    //使用数组来记录该树的所有节点
    private Object[] datas;
    private int DEFAULT_DEEP = 8;
    //保存该树的深度
    private int deep;
    private int arraySize;

    //以默认的深度来创建二叉树
    public ArrayBinTree() {
        this.deep = DEFAULT_DEEP;
        this.arraySize = (int) Math.pow(2, deep) - 1;//二叉树总节点的个数,是个公司
        datas = new Object[arraySize];
    }

    //以指定深度来创建二叉树
    public ArrayBinTree(int deep) {
        this.deep = deep;
        this.arraySize = (int) Math.pow(2, deep) - 1;
        datas = new Object[arraySize];
    }

    //以指定深度,指定根节点创建二叉树
    public ArrayBinTree(int deep, T data) {
        this.deep = deep;
        this.arraySize = (int) Math.pow(2, deep) - 1;
        datas = new Object[arraySize];
        datas[0] = data;
    }

    /**
     * 为指定节点添加子节点。
     * @param index 需要添加子节点的父节点的索引
     * @param data 新子节点的数据
     * @param left 是否为左节点
     */
    public void add(int index , T data , boolean left){
        if (datas[index] == null){
            throw new RuntimeException(index + "处节点为空,无法添加子节点");
        }
        if (2 * index + 1 >= arraySize){
            throw new RuntimeException("树底层的数组已满,树越界异常");
        }
        //添加某个指定index的左子节点,奇数
        if (left){
            datas[2 * index + 1] = data;
        }else{//偶数		添加某个指定index的右子节点,奇数
            datas[2 * index + 2] = data;
        }
    }

    //判断二叉树是否为空。
    public boolean empty(){
        //根据根元素来判断二叉树是否为空
        return datas[0] == null;
    }
    //返回根节点。
    public T root(){
        return (T)datas[0] ;
    }
    //返回指定节点(非根节点)的父节点。
    public T parent(int index){
        return (T)datas[(index - 1) / 2] ;//整除,不会产生小数,生成节点的逆向
    }
    //返回指定节点(非叶子节点)的左子节点。当左子节点不存在时返回null
    public T left(int index){
        if (2 * index + 1 >= arraySize){
            throw new RuntimeException("该节点为叶子节点,无子节点");
        }
        return (T)datas[index * 2 + 1] ;
    }
    //返回指定节点(非叶子节点)的右子节点。当右子节点不存在时返回null
    public T right(int index){
        if (2 * index + 2 >= arraySize){
            throw new RuntimeException("该节点为叶子节点,无子节点");
        }
        return (T)datas[index * 2 + 2] ;
    }
    //返回该二叉树的深度。
    public int deep(int index){
        return deep;
    }
    //返回指定节点的位置。
    public int pos(T data){
        //该循环实际上就是按广度遍历来搜索每个节点
        for (int i = 0 ; i < arraySize ; i++){
            if (datas[i].equals(data)){
                return i;
            }
        }
        return -1;
    }
}
2、二叉树链表存储

为每个节点增加左右两个指针,分别指向该节点的左右两个子节点

(刚才不知道点了什么,屏幕中突然出现了一条提示“ALT+左箭头可后退”,在我还没有理解这句话的时候我的手已经做出了反应,alt+左箭头毫不犹豫的按了下去,结果......真的后退了......我之前打的字粘的代码传的图片都没有了......如果你想清空刚才你写的文章的话这不失为一个好方法,要不然朋友们还是不要轻易尝试了......)

链表存储情况如下图所示:


代码如下:

class LinkBinTree<E> {
    public static class TreeNode{
        Object data;
        TreeNode left;
        TreeNode right;
        public TreeNode(){
        }
        public TreeNode(Object data){
            this.data = data;
        }
        public TreeNode(Object data , TreeNode left, TreeNode right){
            this.data = data;
            this.left = left;
            this.right = right;
        }
    }
    private TreeNode root;
    //以默认的构造器来创建二叉树
    public LinkBinTree(){
        this.root = new TreeNode();
    }
    //以指定根元素来创建二叉树
    public LinkBinTree(E data){
        this.root = new TreeNode(data);
    }
    /**
     * 为指定节点添加子节点。
     * @param parent 父节点
     * @param data 新子节点的数据
     * @param isLeft 是否为左节点
     * @return 新增的节点
     */
    public TreeNode addNode(TreeNode parent , E data, boolean isLeft){
        if (parent == null)	{//父亲为空
            throw new RuntimeException(parent +
                    "节点为null,无法添加子节点");
        }
        if (isLeft && parent.left != null){//已经有左节点了
            throw new RuntimeException(parent +
                    "节点已有左子节点,无法添加左子节点");
        }
        if (!isLeft && parent.right != null){//已经有右节点了
            throw new RuntimeException(parent +
                    "节点已有右子节点,无法添加右子节点");
        }
        TreeNode newNode = new TreeNode(data);
        if (isLeft)	{
            //让父节点的left引用指向新节点
            parent.left = newNode;
        }else{
            //让父节点的left引用指向新节点
            parent.right = newNode;
        }
        return newNode;
    }
    //判断二叉树是否为空。
    public boolean empty(){
        //根据根元素来判断二叉树是否为空
        return root.data == null;
    }
    //返回根节点。
    public TreeNode root(){
        if (empty()){
            throw new RuntimeException("树为空,无法访问根节点");
        }
        return root;
    }
    //返回指定节点(非叶子)的左子节点。当左子节点不存在时返回null
    public E leftChild(TreeNode parent){
        if (parent == null){
            throw new RuntimeException(parent +
                    "节点为null,无法添加子节点");
        }
        return parent.left == null ? null : (E)parent.left.data;
    }
    //返回指定节点(非叶子)的右子节点。当右子节点不存在时返回null
    public E rightChild(TreeNode parent){
        if (parent == null)	{
            throw new RuntimeException(parent +
                    "节点为null,无法添加子节点");
        }
        return parent.right == null ? null : (E)parent.right.data;
    }
    //返回该二叉树的深度。
    public int deep(){
        //获取该树的深度
        return deep(root);
    }
    //这是一个递归方法:每棵子树的深度为其所有子树的最大深度 + 1
    private int deep(TreeNode node){
        if (node == null){
            return 0;
        }
        //没有子树
        if (node.left == null && node.right == null){
            return 1;
        }else{
            int leftDeep = deep(node.left);
            int rightDeep = deep(node.right);
            //记录其所有左、右子树中较大的深度
            int max = leftDeep > rightDeep ? leftDeep : rightDeep;
            //返回其左右子树中较大的深度 + 1
            return max + 1;
        }
    }
}

(终于弄明白了最后一个计算深度的递归方法,画个图庆祝一下......)


3、二叉树的先序、中序、后序遍历

先序(DLR):

(1)访问根节点

(2)先序遍历左子树

(3)先序遍历右子树

中序(LDR):

(1)中序遍历左子树

(2)访问根节点

(3)中序遍历右子树

后序(LRD):

(1)后序遍历左子树

(2)后序遍历右子树

(3)访问根节点


public class Traverse {
    class TreeNode<T>{
        private T data;
        private TreeNode<T> leftNode;
        private TreeNode<T> rightNode;
        public TreeNode(T data,TreeNode<T> leftNode,TreeNode<T> rightNode){
            this.data=data;
            this.leftNode=leftNode;
            this.rightNode=rightNode;
        }
        public T getData(){
            return data;

        }
        public void setData(T data){

        }
        public TreeNode<T> getLeftNode(){
            return leftNode;
        }
        public void setLeftNode(TreeNode<T> leftNode){
            this.leftNode=leftNode;

        }
        public TreeNode<T> getRightNode(){
            return rightNode;
        }
        public void setRightNode(TreeNode<T> rightNode){
            this.rightNode=rightNode;
        }

    }
    public  TreeNode<String> init(){
        TreeNode<String> D=new TreeNode<String>("D",null,null);
        TreeNode<String> H=new TreeNode<String>("H",null,null);
        TreeNode<String> I=new TreeNode<String>("I",null,null);
        TreeNode<String> J=new TreeNode<String>("J",null,null);
        TreeNode<String> P=new TreeNode<String>("K",null,null);
        TreeNode<String> G=new TreeNode<String>("G",P,null);
        TreeNode<String> F=new TreeNode<String>("F",null,J);
        TreeNode<String> E=new TreeNode<String>("E",H,I);
        TreeNode<String> B=new TreeNode<String>("B",D,E);
        TreeNode<String> C=new TreeNode<String>("C",F,G);
        TreeNode<String> A=new TreeNode<String>("A",B,C);
        return A;
    }

    public void printNode(TreeNode<String> node){
        System.out.println(node.getData()+" ");;

    }

    //先序遍历
    public void pre_order(TreeNode<String> node){
        this.printNode(node);//D
        if(node.getLeftNode()!=null){//L
            this.pre_order(node.getLeftNode());
        }
        if(node.getRightNode()!=null){
            this.pre_order   (node.getRightNode());
        }
    }

    //中序遍历
    public void in_order(TreeNode<String> node){
        if(node.getLeftNode()!=null){//L
            this.in_order(node.getLeftNode());
        }
        this.printNode(node);//D
        if(node.getRightNode()!=null){//R
            this.in_order(node.getRightNode());
        }
    }

    //后序遍历
    public void post_order(TreeNode<String> node){
        if(node.getLeftNode()!=null){//L
            this.post_order(node.getLeftNode());
        }
        if(node.getRightNode()!=null){//R
            this.post_order(node.getRightNode());
        }
        this.printNode(node);//D
    }


    public static void main(String[] args) {
        Traverse Tree=new Traverse();
        TreeNode<String> node=Tree.init();
        System.out.println("先序遍历DLR的情况");
        Tree.pre_order(node);

        System.out.println("中序LDR遍历的情况");
        Tree.in_order(node);

        System.out.println("后序遍历LRD的情况");
        Tree.post_order(node);
    }
}
4、广度优先遍历(按层遍历)

实现代码如下:

public void level(TreeNode<String> node){
        Queue<TreeNode<String>> queue=new ArrayDeque<TreeNode<String>>();
        queue.add(node);
        while(!queue.isEmpty()){
            TreeNode<String> n=queue.poll();
            this.printNode(n);
            if(n.getLeftNode()!=null){
                queue.add(n.getLeftNode());
            }
            if(n.getRightNode()!=null){
                queue.add(n.getRightNode());
            }
        }
    }




Python实现二叉树及其4种遍历 Python & BinaryTree 1. BinaryTree (二叉树) 二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 二叉树的第i层至多有2^{i-1}个结点 深度为 阅读详情

相关推荐

C++实现二叉树及其遍历方法

在C++中,二叉树的节点通常由结构体或类来表示。节点类(我们这里称之为TreeNode)的属性是树结构的基础,它需要包含至少三个部分:节点值(存储数据)、左子节点指针和右子节点指针。// 节点存储的数据// 指向左子节点的指针// 指向右子节点的指针val是节点存储的数据,可以是整数、字符等基本数据类型,也可以是对象。left和right是两个指针类型,用于指向当前节点的左子节点和右子节点。如果该节点没有子节点,则这两个指针应指向。

weixin_42181686的博客 826

二叉树实现及相关操作知识梳理

树型结构 前言 树型结构在生活中是非常常见的一种结构,应用范围很广,就用一个简单的例子来说。计算机中的文件目录就是一个树型结构,一般创建一个文件,如果文件中没有文件那么就相当于一个空树,如果里面有文件,就相当于这个文件的子树,以此类推,就形成了树型结构的文件目录。 在学习中我们主要学习二叉树的一些特性,把树细化学习。 二叉树的概念 二叉树是结点的有限集合,该集合或者为空,或者...

GangStudyIT的博客 511

暗黑破坏神2重制版 mod制作教程(一)

暗黑2重制版mod修改教程

hhhh2312的博客 7458

数据结构-二叉树的遍历(代码实现)

遍历方法共有四种,前篇已经介绍过,性质上分为深度优先和广度优先。

2302_80362563的博客 1731

三菱CNC数据采集实战:从环境搭建到代码实现的完整指南

本文提供了一份完整的三菱CNC数据采集实战指南,涵盖从开发环境搭建、核心SDK获取、网络配置到基于C#和A2协议的完整代码实现。文章详细解析了初始化、连接管理、数据获取与展示四大核心模块,并分享了错误处理、性能优化及与MES系统集成的关键技巧,帮助工程师快速构建稳定可靠的工业数据采集系统。

wood5的博客 891

从Live2D到Unreal Engine:2D与3D虚拟数字人核心技术实现路径解析

本文深入解析了从Live2D到Unreal Engine的2D与3D虚拟数字人核心技术实现路径,涵盖技术选型、制作流程与优化技巧。通过对比2D骨骼动画与3D建模渲染的差异,结合实战案例,帮助开发者根据项目需求选择合适方案,提升虚拟数字人的交互体验与视觉效果。

weixin_30379531的博客 149

二叉树的遍历算法实现、以及所有简单操作

二叉树的遍历分为先序遍历,中序遍历,后序遍历,层序遍历; 先序遍历:根节点->左子树->右子树        递归思想:先打印根节点数据,然后调用函数取根节点左子树的         递归实现: 非递归思想: 非递归实现:

he_shuai20的博客 777

IBM 3560M3 R5 坏盘更换记录

公司一台老旧 3650M3在日常巡查过程中发现硬盘报错

ddriv的博客 3945

二叉树(二叉查找树)的遍历(前中后序),添加,查找,删除,节点个数等基础操作,java实现及代码演示。

二叉树是一种常用的树结构。对于树,我们称每一个节点的子节点个数为度;二叉树就是任意一个度小于等于2树,也就是说,二叉树中任意节点的子节点个数小于等于2;二叉查找树是指按照一定规则次序排列的二叉树,这种二叉树左子树的任意节点的值小于当前节点,右子树的任意节点的值大于当前节点,二叉查找树中不能有重复数据。这是我通过随意数据画出的二叉查找树,之后的操作都将用这组数据作为测试;

m0_74000465的博客 1084

避坑指南:LISFLOOD-FP模型数据单位、参数文件与results文件夹结果解析全攻略

本文详细解析了LISFLOOD-FP洪水模拟模型的关键应用环节,包括数据单位校验、参数文件优化及结果文件解读与可视化。特别针对常见的单位混淆问题,提供了从DEM到边界条件的全面校验方法,并深入剖析了.par参数文件的配置技巧,帮助用户避免模型崩溃和结果失真。

weixin_42533622的博客 237

多重共线性问题 -- 岭回归方法

概述 本篇博客分为三大部分,线性模型、多重共线性问题和岭回归。其中,线性模型中介绍了线性模型定义和普通最小二乘法对线性模型的拟合。第二部分,借由1987-2007年的人口、消费和科技对碳排放的影响的数据来说明多重共线性问题(包括如何从定性和定量两个方面判断多重共线性问题)和多重共线性问题对普通最小二乘估计的影响。第三部分,使用岭回归对第二部分中的多重共线性问题进行拟合,并基于R2R^2R2决定系数...

楚江客的记录 1万+

数据结构 二叉树的层次遍历 c/c++实现

数据结构,二叉树的层次遍历 c/c++。此处,我们用T表示二叉树的根节点,出谁的时候,T 的指针就会移动到哪里,假设根节点是A,那么第一次首先是A,然后入队A的左右孩子。每出一个根,此时T的指针就指向谁,此时同时入队谁的左右孩子,顺序就不会错。上面那个代码实现,看似T的指针好像一直没有更新,但仔细观察队列的出队和入队的函数,会发现,每次出/入队的时候,都会用T保存已经出队或入队的元素地址,以此来完成对根节点指针T的更新。

weixin_63676550的博客 1137

Python3实现基于ARIMA模型来预测茅台股票价格趋势

ARIMA(Autoregressive Integrated Moving Average)模型是一种广泛使用的时间序列分析方法,它可以用于对未来的数据进行预测。ARIMA模型由自回归模型(AR模型)、差分整合模型(I模型)和移动平均模型(MA模型)组成,因此也被称为ARIMA(p,d,q)模型。其中,p表示自回归阶数,d表示差分阶数,q表示移动平均阶数。具体来说,ARIMA模型可以通过以下步骤进行建模:数据预处理:对时间序列进行平稳性检验,如果不满足平稳性,则进行差分操作。

m0_64336780的博客 2万+

二叉树的遍历及其Java实现

所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问,对二叉树的遍历就是将非线性结构的二叉树中的节点排列在一个线性序列上的过程。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。 如果采用顺序结构来保存二叉树,遍历二叉树非常容易,直接遍历底层数组即可。如果采用链表来保存,则有以下两类遍历方式:

生命在于折腾 2695

手把手教你学Simulink实例--基于Simulink的电力电子系统电池管理系统(BMS)设计与仿真实例

本文详细介绍了基于Simulink的电池管理系统(BMS)设计与仿真全过程。首先阐述了BMS在安全防护、寿命延长和性能优化方面的必要性,分析了新能源汽车、光伏储能等典型应用场景的技术指标要求。接着详细讲解了Thevenin等效电路和多电平电池模型构建方法,并给出SOC估算、故障诊断等核心算法的MATLAB实现代码。通过设计正常充放电、过充保护等多场景仿真测试,验证了系统在SOC跟踪精度(误差<1.5%)和故障响应速度(<10ms)方面的优异性能。文章还提出了参数优化方法和未来AI融合、数字孪生等发展方向,提

xiaoheshang_123的博客 380

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

二叉树及其遍历的JavaScript实现

一、引 上次写了堆,这次写个二叉树的,直接写代码吧。 二、代码 // node 节点类 function node(val){ let self = this self.left = null; self.right = null; self.val = val; // 插入(更新)节点 self.insert = function(kind, nod...

nnni 588

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

遍历二叉树及其递归实现

遍历二叉树 在二叉树的应用中,常常要求在树中查找具有某种特征的结点,或者对树中的结点逐一进行某种处理,这就出现了一个如何遍历二叉树的问题。 我们希望能按照某条搜索路径访问树中的每一个结点,并使得每个结点有且仅被访问一次。“访问”的含义很多,可以是对结点作各种处理,如输出结点的信息等。遍历对线性结构来说是一个容易解决的问题,而对于二叉树则不然,由于二叉树是一种非线性结构,它的每个结点都可能有0~2...

qq_42932834的博客 318

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

二叉树及其四种遍历的实现

前言:在数据的组织中,树结构的确是一个突破,因为我们用它实现的一系列算法比使用线性结构要快得多,主要的用途是用来提高查找效率,对于要重复查找的情况效果更佳,如二叉排序树、FP-树。另外可以用来提高编码效率,如哈弗曼树。 本文介绍如何使用Python实现二叉树的层次遍历、先序遍历、中序遍历以及后序遍历。 概念: 层次遍历(广度优先遍历):把节点的兄弟节点先搜索完了再往孩子节点搜索。 先序遍历...

wangTongGen 522

线索化二叉树及其遍历(java代码实现)

线索化二叉树及其遍历(java代码实现) 线索化二叉树介绍 当一个二叉树存在多个叶子结点,这下叶子节点的左右子树没有利用上====>我们考虑将其充分利用,让各个节点可以指向自己的前后节点 1)n个节点的二叉树链表中含有(n+1)个空指针域 2)利用二叉树链表中的空指针域,存放该节点在某种遍历次序下的前驱节点和后继节点 3)这种加上了线索的二叉树链表称为线索链表,相应的二叉树称为线索二叉树(ThreadedBinaryTree) 4)根据线索化二叉树的遍历次序的不同:可分为前序线索二叉树,中序线索二叉树

qq_22993855的博客 813

二叉树链式存储实现及其遍历

二叉树的链式存储1 二叉树的链式存储1.1 链式存储实现方式1.2 二叉树结点2 二叉树的遍历2.1 深度优先遍历2.1.1 前序遍历2.1.2 中序遍历2.1.3 后序遍历2.2 广度优先遍历3 二叉树的最大深度&k层结点个数&叶子结点个数&3.1 二叉树的深度3.2 二叉树结点个数3.3 二叉树叶子结点个数3.4 二叉树第K层结点个数 1 二叉树的链式存储 1.1 链式存储实现方式 二叉树的链式存储结构是指:用链表来表示元素间的逻辑关系 。通常的方法是链表中每个结点由三个域组成,

CZHLNN的博客 1770

超强二叉树解析(数组,链表实现,8种遍历方法,前,中,后序线索化二叉树及其遍历)---风之java

666

风生的博客 1972

二叉树的建立及其递归遍历(C语言实现)

最近在学习数据结构中树的概念,迟迟不得入门,应该是自己的懒惰和没有勤加练习导致的,以后应该多加练习 以下是我对二叉树的一些总结内容 二叉树的特点有: - 每一个节点最多有两棵子树,所以二叉树中不存在度大于2的节点,注意,是最多有两棵,没有也是可以的 左子树和右子树是有顺序的,次序不能颠倒,这点可以在哈夫曼编码中体现, 顺序不同编码方式不同 -即使树中某个节点中只有一个子树的花,也要区分它...

dream0130__的博客 13万+

全面解析二叉树的层次遍历及其实现

层次遍历是指按照二叉树的层级,从上到下、从左到右依次访问每个节点。int val;层次遍历是二叉树遍历的重要方法,其实现简单且应用广泛。层次遍历的基本实现。按层分组输出的扩展。常见的扩展应用场景。层次遍历是树形结构问题的基础,建议在实际问题中多加练习,以便深入理解和灵活应用。

zhaoshanshan168的博客 1410

排序二叉树及其遍历 c语言实现

    所谓建立排序二叉树就是,就是将各结点数据元素顺序插到一棵二叉树中,在插入的过程中,始终保持二叉树中每个结点的值都大于其左子树上每个结点的值,而小于或等于其右子树上每个结点的值,每个结点信息包括结点数据(结点值)、左子树指针、右子树指针。程序执行的过程中,bt指针始终指向根结点,p指针指向当前已找到的结点,q指针不断向下寻找新的结点。   为实现二叉树的非递归算法,需要设置一个栈来保

每天都要进步! 1389

Java创建二叉树及其遍历的递归和非递归实现

紧接上一篇,网上搜索了Java实现二叉树的方法及二叉树的遍历方法,参考:http://blog.youkuaiyun.com/skylinesky/article/details/6611442     学习和调试后代码如下:     测试数据(#表示节点为空):         所建立二叉树如下:         代码如下:     // 树的节点 public class TreeNod

心若无尘 3884

c++实现二叉树的建立及其遍历

测试二叉树: 参考:https://blog.youkuaiyun.com/qq_39290007/article/details/79515041 实现创建如上图二叉树(#代表空)、二叉树的各种遍历(先序遍历[递归和非递归]、中序遍历、后序遍历)以及求二叉树节点个数、深度、叶子节点、第K层节点等一系列操作。 # define _CRT_SECURE_NO_WARNINGS 1 #include...

zfjBIT的专栏 1031
上一篇: 各种排序算法的原理、实现及其时间复杂度
下一篇: Java知识点小总结(二)
yang_9613
博客等级 码龄10年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值