当前位置: 首页 > backend >正文

为什么访问树节点用 `root->right` 这种形式

为什么访问树节点用 root->right 这种形式?

我们来彻底讲清楚它的含义、用法、原理,以及和 . 的区别。


🔍 一、-> 是什么?

这是 C/C++ 中的 指针访问结构体成员的操作符

格式是:

ptr->member

等价于:

(*ptr).member

🧠 二、具体到你的二叉树代码

你定义的结构体是这样的:

struct TreeNode {int val;TreeNode *left;TreeNode *right;
};

这里的 leftright 本身就是指针类型

TreeNode* left;
TreeNode* right;

假设我们构建了一个节点:

TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);

你要访问右子树的值:

int x = root->right->val;

就相当于:

int x = (*((*root).right)).val;

是不是很绕?这就是为什么我们用 -> 简化它。


📌 三、总结一下:什么时候用 ->,什么时候用 .

情况使用方式示例
是对象本体.node.left->val
是对象的指针->root->right

✅ 举个完整例子:

TreeNode node(10);
node.left = new TreeNode(20);// node 是对象,用 .
std::cout << node.val << std::endl;// node.left 是指针,用 ->
std::cout << node.left->val << std::endl;

💡 口诀记忆:

对象点成员,指针箭头连。


http://www.xdnf.cn/news/1211.html

相关文章:

  • ANDON系统看板助力电器组装线实现智能管理
  • 鸿蒙NEXT开发权限工具类(申请授权相关)(ArkTs)
  • 如何给pip命令国内镜像源
  • Python 简介与入门
  • 轻量级别的htpp客户端--Forest
  • “多模态SCA+DevSecOps+SBOM风险情报预警 “数字供应链安全最佳管理体系!悬镜安全如何用AI守护万亿数字中国?
  • KUKA机器人KR 3 D1200 HM介绍
  • JDK版本与Spring Boot版本之间对应关系
  • 【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-放置标记
  • day3 打卡训练营
  • 多表查询之嵌套查询
  • 深圳有哪些有名的PCB设计的培训班
  • 4.LinkedList的模拟实现:
  • 实践项目开发-hbmV4V20250407-Taro项目构建优化
  • 瓦瑟斯坦差分隐私中命题7对总变差TV的应用
  • vue3 组件传参
  • 2025软件测试常用面试问题及参考答案(附文档)
  • 计算机组成与体系结构:缓存(Cache)
  • TCP和UDP
  • Windows 同步-Windows 单向链表和互锁链表
  • Typebot:开源、强大、可自托管的聊天机器人构建工具
  • DES、3DES、SM4 加密算法简介
  • 查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例
  • 第十五届蓝桥杯 2024 C/C++组 下一次相遇
  • Uniapp:navigator(页面跳转)
  • 【飞渡科技数字孪生虚拟环境部署与集成教程 - CloudMaster实战指南】
  • KDD Cup 2017 数据集分析
  • G1 人形机器人软件系统架构与 Python SDK
  • BeeWorks:专业的企业Im即时通讯平台
  • PyTorch深度学习框架60天进阶学习计划 - 第48天:移动端模型优化(二)