好运杏仁eee 2023-05-15 23:50 采纳率: 75%
浏览 20
已结题

二叉树先序遍历 代码的意思

Leetcode 144 二叉树先序遍历
int* resSize 与 int resSize[] 可以看作等价,那么在 res[(*resSize)++] = root->val; 中为什么数组又嵌了一个数组,这句应该怎么理解?
还有为什么他要一个returnSize表示长度?
谢谢!

img

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-05-16 00:11
    关注

    基于Monster 组和GPT的调写:

    • 在这段代码中,res 是存储结果的数组,而 resSize 是用来表示结果数组的长度的变量。
    • resSize 在这里是一个指向整数的指针,因为我们需要在递归的过程中不断更新结果数组的长度。(*resSize)++ 的作用是将当前节点的值存入结果数组中,并且将 resSize 的值加一,表示数组长度增加了一个元素。
    • 你可能会疑惑为什么不直接使用 int resSize 而要用指针形式 int* resSize。这是因为在递归的过程中,我们需要在不同的层级上共享同一个变量,以便能够正确地更新结果数组的长度。如果使用普通的 int 变量,每次递归调用时都会创建一个新的局部变量,无法在不同层级之间共享值。
    • 至于 returnSize,它是一个指向整数的指针,用来表示结果数组的长度。在 preorderTraversal 函数中,我们通过 *returnSize = 0 初始化结果数组的长度为 0。然后,在 preorder 函数中,每次将节点的值存入结果数组后,都会通过 (*resSize)++ 更新 returnSize 的值,最终得到结果数组的正确长度。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月15日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件