递归遍历二叉树,怎样保存结点数值到数组里

求讲解 递归遍历二叉树的时候,怎样能 在访问每个结点时,将结点的数值存到数组里。最后得到一个结点数值的数组。教材上遍历的时候都是直接输出,没有存到数组里,但是我在编程时遇到了要存到数组里的问题。求大神~~~

追问:
追问一下,我晚上试了一下,感觉使用数组作为参数看起来可以,但是在递归的时候每次递归数组的角标i都会被重新定义。貌似全局变量或者静态局部变量在递归时都会被重新定义。这怎么处理啊 好心塞

3个回答

将数组作为一个遍历函数的一个参数,遍历到一个节点,就将该节点数值保存到数组中,由于数组的传递是地址传递,所以函数中的改变会反应到外部,所以遍历结束,数组中就是遍历的数据

havedream_one
havedream_one 将角标也作为参数传递
4 年多之前 回复
emesoohc
emesoohc 回复emesoohc: 追问一下,我晚上试了一下,感觉使用数组作为参数看起来可以,但是在递归的时候每次递归数组的角标i都会被重新定义。貌似全局变量或者静态局部变量在递归时都会被重新定义。这怎么处理啊 好心塞
4 年多之前 回复
emesoohc
emesoohc 明白了 我试试看!
4 年多之前 回复

关键的问题在于,你没有办法事先知道需要多大的数组。所以有两个办法,一个是估算一个数组的大小,如果超过,就再开一个更大的数组,把现有的数据拷贝进去。
另一个办法是先开一个向量或者链表存数据,最后再转换为数组。

emesoohc
emesoohc 谢谢
4 年多之前 回复

两种方法,1.开一个全局数组,2.数组的指针当参数传递

emesoohc
emesoohc 谢谢~
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问