【发布时间】:2016-06-21 17:38:06
【问题描述】:
我想避免重复我的 if-else 两次(一次左,一次右,完全相同),所以我这样做了,感觉很不习惯:
MovieNode** child = title < parent->title ? &parent->left : &parent->right;
if(*child)
parent = *child;
else
*child = new MovieNode(ranking, title, releaseYear, quantity);
这样做的正确方法是什么?
[顺便说一句,这就是我更喜欢 Haskell XD 的原因,我只会做 parent = child]
【问题讨论】:
-
那么你认为什么是单调的?
-
我认为您的示例代码中存在错误:
*child的类型为MovieNode*,而不是MovieNode,因此最后一行没有意义。 -
哦,我应该有新的
-
为什么要使用双指针?
-
不相关,有一次我写了一个二叉树,也因为同样的原因而受挫,就切换到了
Node* children[2];,很神奇。Node* child = parent->children[title > parent->title];没有分支。
标签: c++ pointers binary-tree idioms