为什么在二叉树遍历题目中Java和指针语言的返回不同

        在做类似二叉树遍历等题目时, 发现怎么java都是新建一个list集合,而不是新建一个二叉树,返回 , 但怎么C语言,golang这些语言都是返回指针呢? 这就引起了我的不爽,我Java何时才能站起来。

        Java 和 C 语言(或 C++,golang)中的实现差异主要源于它们对数据和内存管理的不同方式。

Java 中的实现

        Java 使用自动内存管理和垃圾回收,因此在 Java 中创建并返回一个新的 List 集合是非常常见的做法。List 是 Java 标准库中的一个接口,提供了动态数组的功能,可以很容易地添加、删除元素,并且不需要担心内存分配和释放的问题。在实现二叉树的中序遍历时,我们通常会在递归或迭代的过程中将节点值添加到 List 中,最后返回这个 List。这样做既简单又高效,而且避免了手动管理内存的复杂性。

C 或 C++ 中的实现

        C 和 C++ 不提供自动内存管理,程序员需要显式地使用指针来操作动态内存。在这些语言中,如果要求返回中序遍历的结果,通常的做法是返回指向结果的指针。这是因为直接在函数内创建一个动态数组或链表并返回它,可能会导致调用者不知道如何正确地释放这个内存,从而可能造成内存泄漏。因此,更常见的做法是让调用者传递一个指针参数,或者返回一个指针,由调用者负责后续的内存管理

此外,在 C 或 C++ 中,如果函数返回一个动态分配的数组或链表,那么调用者必须知道这个数组或链表的大小或结构,以便能够正确地访问和释放它。这通常意味着函数还需要返回一些额外的信息,比如数组的长度或者链表的最后一个节点的指针。

简而言之,Java 的自动内存管理和标准库使得返回一个 List 成为一种简单、直观且安全的选择;而在 C 或 C++ 中,由于需要手动管理内存,返回指针并由调用者负责释放是更常见的做法。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值