Open SunshlnW opened 5 years ago
66-67行代码
if(rootInorder == endInorder && *rootInorder != rootValue)
throw std::exception("Invalid input.");
这句没有用吧!
只有一个节点且这个节点还和记录的根节点rootValue不一致,就是非法输入的意思吧
66-67行代码
if(rootInorder == endInorder && *rootInorder != rootValue)
throw std::exception("Invalid input.");
这句没有用吧!
判断前序遍历找到的根的值 跟中序遍历里的根的值 是否相等吧
66-67行代码
if(rootInorder == endInorder && *rootInorder != rootValue)
throw std::exception("Invalid input.");
这句没有用吧!
首先,这两句是在第61和62行。
个人认为应该把第61句if(rootInorder == endInorder && *rootInorder != rootValue)
改为if(rootInorder > endInorder)
,处理在中序数组中未找到root的情况。
66-67行代码
if(rootInorder == endInorder && *rootInorder != rootValue)
throw std::exception("Invalid input.");
这句没有用吧!首先,这两句是在第61和62行。 个人认为应该把第61句
if(rootInorder == endInorder && *rootInorder != rootValue)
改为if(rootInorder > endInorder)
,处理在中序数组中未找到root的情况。
赞同!0.0 刚看到书的这块,觉得有点小问题。
刚才看到这块也觉得有问题,61行改成if(rootInorder > endInorder)
或者58行改成while(rootInorder < endInorder && *rootInorder != rootValue)
。不然感觉没办法处理找不到根的情况。
刚才看到这块也觉得有问题,61行改成
if(rootInorder > endInorder)
或者58行改成while(rootInorder < endInorder && *rootInorder != rootValue)
。不然感觉没办法处理找不到根的情况。
虽然这个地方跑代码没有问题的,如果rootInorder > endInorder。那么在构建右子树的时候就会抛出异常。但是这个地方应该是写错了,不然太奇怪了。
66-67行代码
if(rootInorder == endInorder && *rootInorder != rootValue)
throw std::exception("Invalid input.");
这句没有用吧!