Perl 二叉搜索树

perl 实现二叉树,二叉平衡树  #! /usr/bin/perl -wuse strict;use warnings;use Data::Dumper;my $head = undef;my $copy = /$head;foreach my $index( 1 .. 10 ){  &AVLTree_insert($copy, $index);}#&create_BSTree( $copy );#&create_tre 阅读详情

用Perl 的一般方式实现了一个完整的二叉搜索树,有如下功能:

1. 插入,删除,搜索

2. 最大,最小值

3. 某节点的前序节点,后序节点


整个过程中更改了好几次:

1. 增加了parent 属性,可以方便的找到父节点,有利于前序后序节点的查找。

2. 最初节点不是都有left right 属性,只有在有子节点的情况下才出现,后来为了统一所有节点都加上这些属性,没有子节点的情况下置为空undef。

3. 由于Perl 的限制,根节点用$root = { left => undef, right => undef, key => undef, parent => undef } 表示,如果使用$root = undef,则添加节点的时候会出错,所以只能使用一个引用来代替。


附代码:

#second version, advanced data structure with parent
use strict;
use warnings;
use Data::Dumper;

sub tree_empty {
    my ($tree) = @_;
    return !defined $tree->{key};
}

sub tree_insert {
    my ( $tree, $value ) = @_;

    if ( tree_empty($tree) ) {
        $tree->{key} = $value;
    }
    elsif ( $value < $tree->{key} ) {
        if ( $tree->{left} ) {
            tree_insert( $tree->{left}, $value );
        }
        else {
            $tree->{left} = {
             
C++ STL核心组件实战指南:从容器算法到性能优化 在C++编程中,数据结构和算法是构建高效软件的基础。标准模板库(STL)通过泛型编程思想,将常用的数据结构和算法封装为可复用的组件,其核心价值在于提升开发效率、保证代码健壮性并优化程序性能。STL包含四大组件:容器负责数据存储组织,算法提供通用操作,迭代器作为两者间的统一接口,函数对象则赋予算法灵活性。例如,vector作为动态数组,凭借其连续内存布局和快速随机访问特性,成为序列容器的默认选择;而map和unordered_map则分别基于红黑树和哈希表实现,为键值对存储与快速查找提供了高效解决方案。掌握S 阅读详情

相关推荐

4、面向对象编程与Perl基础:深入解析

本文深入探讨了面向对象编程的核心概念,包括聚合、泛型和持久性,并结合Perl语言的基础知识进行了详细解析。文章涵盖Perl的多种数据类型(如标量、数组、哈希)、子程序、引用、模块、正则表达式及控制结构等内容,同时介绍了错误处理机制。通过这些内容,读者可以全面了解面向对象编程的核心思想以及Perl语言的基本用法,为后续开发实践打下坚实基础。

x1y2z的博客 61

【16】linux命令/工具,systemd,文件操作,动静态库,信号,socket

apt install python3-pip --fix-missing(断开vpn,cp /etc/apt/sources.list /etc/apt/sources.list.bak,python3 -m pip install --upgrade pip,apt-get update,pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com)设置时间,联网,apt-get install vim。

持续更新ing... 6788

perl 编写的tree显示结构

use perl programming tool to struct tree

耶鲁大学《博弈论》课程——逆向归纳

耶鲁大学《博弈论》课程——逆向归纳

ZYLer_的博客 7870

【毕业设计】QT实战:从零构建仿QQ通讯系统,打造你的简历亮点项目

本文为计算机专业毕业生提供了一份详尽的毕业设计实战指南,教你如何从零开始使用QT框架构建一个仿QQ的即时通讯系统。文章深入剖析了项目规划、核心模块(登录、聊天、好友管理)的实现、TCP粘包处理、数据库设计等关键技术难点,并分享了如何将此项目打造成简历亮点,有效提升求职竞争力。

omega的博客 442

IC版图设计布局经验90条!

13 如果一个cell调用其它cell,被调用的cell的vssx,vddx,vssb,vddb如果没有和外层cell连起来,要打上PIN,否则通不过diva检查.尽量在布局低层cell时就连起来。48 在匹配电路的mos管左右画上dummy,用poly,poly的尺寸与管子尺寸一样,dummy与相邻的第一个poly gate的间距等于poly gate之间的间距。8 更改cell时查看路径,一定要在正确的library下更改,以防copy过来的cell是在其他的library下,被改错。

weixin_44606964的博客 910

不用变压器也能联网?手把手教你PHY芯片直连的3种实用方案

本文详细介绍了PHY芯片直连的3种实用方案,帮助开发者在物联网设备中实现更经济、更精简的网络连接设计。通过分析电压驱动型和电流驱动型PHY的核心原理,提供具体的电路配置和优化建议,确保信号质量的同时节省成本和空间。

smartcontract5的博客 332

以LAN8720A为例的以太网硬件设计方案

输入时钟(XTAL1/CLKIN,XTAL2):推荐外加25MHz(性价比较高)晶振为PHY芯片提供时钟,PHY芯片内部PLL将其倍频为50MHz来使用,亦可使用直接使用50MHz晶振。三位MODE通过高低电平组合分别对应以上8种模式 ,包含10M半双工,10M全双工,100M半双工,100M全双工,是否启用自协商协议,CRS是否有效等。VDDCR:1.2V电源,可由芯片内部稳压电源提供,亦可由外部电源提供,由外部电源提供可降低芯片功耗。REF_CLK:参考时钟,由MAC或外部时钟晶振向PHY芯片提供。

weixin_46154042的博客 5884

SLAM 轨迹评估工具——EVO安装、使用介绍

evo是一款用于视觉里程计和SLAM问题的轨迹评估工具. 核心功能是能够绘制相机的轨迹, 或评估轨迹与真值之间的误差. 支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag), 同时支持这些数据格式之间的相互转换,本文轨迹展示以tum数据格式为例。

u010196944的博客 1万+

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

努力,加油每一天鸭~ 1037

RT-DETR 模型剪枝优化:结构化剪枝对 R18/R50 性能的影响

本文提出分层结构化剪枝策略R18:参数量减少 42%(28M→16.2M),推理速度提升 35%(15→20.3 FPS@Jetson Nano),mAP@0.5 仅降 1.2%;R50:参数量减少 55%(170M→76.5M),推理速度提升 48%(42→62.2 FPS@T4),mAP@0.5 仅降 2.1%。核心价值:为 RT-DETR 提供“精度-效率-部署”平衡的轻量化方案,推动其在边缘设备、工业质检等场景的大规模落地。部署建议。

走向CTO的路上... 464

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Perl 引用变量传入函数中的行为
下一篇: Perl 闭包模拟类实现二叉树
Bai_Yuanyong
博客等级 码龄24年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值