开发平台(Platform): (Ex: Win10, Linux, ...)
Windows 10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
问题(Question):
小弟现在在写学校资结的作业 因为题目需要 顺便练习一下写BST
(是说我们DS的实作超级少 整学期到现在才写过一次程式作业
我读的学校应该也算不错的了 还是其实四大四中的DS上法都差不多
大家觉得这样正常吗@@)
目前主要有两个疑问 一个是插入新node时用到的循环
我的想法主要是这样:
先判断大小
比较小:
左子树没东西->塞进去之后break
左子树有东西->移动current到左子树
比较大:
右子树没东西->塞进去之后break
右子树有东西->移动current到右子树
写成code是39~61行 跑起来也没有问题 但是这样就要用到while(1)或是for(;;)
感觉出现无穷循环code就会容易爆炸XD
不知道有没有方法可以改写成有固定终止条件的while或是do-while
另外一个问题是如果我要帮我的BST写destructor的话
是用类似traversal的方式走到底之后针对每个TreeNode去呼叫delete吗
我目前想到如果是这样 应该是要post-order?
就是最后才删自己才不会让下面的node都变成无法存取的状态
问题有点多 先谢谢板友们的解答XD
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/MIIdzStc