我有book的以下代码,它是二叉树的前序遍历的实现:
template<typename tVal>
struct binaryTree
{
tVal v__;
struct binaryTree<tVal> *left;
struct binaryTree<tVal> *right;
binaryTree(tVal v) : v__(v),
left(NULL), right(NULL) {}
};
template<typename tVal>
void nonRecursivePreOrder(binaryTree<tVal> * root)
{
std::stack<binaryTree<tVal> *> s;
while (true)
{
while (root)
{
std::cout << " v=" << root->v__;
s.push(root);
root = root->left;
}
if (s.empty()) break;
root = s.top();
s.pop();
root = root->right;
}
}
在第9行的三元运算符中,最后{}
的作用是什么?
如何实施利用上述功能的insert
和main
功能?
编辑:我已被告知第9行不是三元运算符,而是&#34;构造函数初始化列表&#34;
答案 0 :(得分:2)
第9行只是一个构造函数。
这样的事情会对你有用:
template<typename T>
void put(binaryTree<T>* root, T val) {
binaryTree<T>* node = new binaryTree<int>(val);
if (root == nullptr) {
root = node;
return;
}
binaryTree<T>* cur = root;
binaryTree<T>* parent = nullptr;
while(cur) {
parent = cur;
cur = (node->v__ > cur->v__) ? cur->right
: cur->left;
}
(node->v__ < parent->v__) ? parent->left = node
: parent->right = node;
}
int main() {
binaryTree<int>* b = new binaryTree<int>(10);
put<int>(b, 11);
put<int>(b, 5);
put<int>(b, 14);
put<int>(b, 25);
put<int>(b, 1);
nonRecursivePreOrder<int>(b);
return 0;
}