C++指针实现二叉树

本文介绍了如何使用C++指针来实现二叉树的构建,强调了指针的基础知识,包括创建指针、动态内存分配、解引用以及NULL与nullptr的区别。并展示了使用结构体表示节点,通过全局变量root进行二叉树的先序遍历和查找。
摘要由CSDN通过智能技术生成

以洛谷[P1305] 新二叉树为例

二叉树是什么东西,先序遍历是什么,这些网上都有,这里就不说了。数组实现也好做,但是复杂一点的用数组怕是要凉,用set啊map呀等STL容器怕是要慢。所以还是指针实现好。但是玩儿指针需要一定的语法基础,看周围大佬居然无一人会用指针建树。

先聊一聊指针。若已掌握,请略过此段。以int型为例。若建立指向某个变量的指针,操作如下:

int a = 0;
int* p = &a;

这个好理解。使用指针名的话用的是指向的地址,若引用指向的值需要对指针“解除引用”,即以*p的形式调用。虽然所谓“解除引用”,但实际上只是取一下值,并不是真的解除了。后面还能接着用。

这实际是创建int*型的指针p,规范些,星号应该在类型后,与指针名以空格隔开。实际上编译器并不区分这点。若建立两个指针,如下:

int a = 0, b = 0;
int* p = &a, * q = &b;

逗号后面要加星号的,否则编译器生成的是int型变量。若单独建立一个指针,则要为它动态分配内存,使用关键字new,如:

int* p = new int;

new后面int的含义其实是该类型的构造函数。关于构造函数我会另写文章介绍。所以,可以按通过构造函数为指针变量赋值,如:

int* p = 
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值