template<class ElemType> BinaryTreeNode<ElemType>* BinaryTree<ElemType>::CreateBinaryTree(vector<ElemType> &x, ElemType &empty, int &n){ ElemType ch = x[n]; n++; if (ch == empty) { return NULL; } else { BinaryTreeNode<ElemType> *Node = new BinaryTreeNode<ElemType>; Node->data = ch; Node->LChild = CreateBinaryTree(x, empty, n); Node->RChild = CreateBinaryTree(x, empty, n); return Node; } }哪里递归了
时间: 2024-02-14 12:05:52 浏览: 60
基于C++的二叉树实现
这段代码使用递归的方式来创建二叉树。具体来说,CreateBinaryTree函数的参数包括一个存储了二叉树节点值的vector x,一个表示空节点的元素empty,以及一个整数n,表示当前递归到的节点在vector x中的位置。在函数内部,首先从vector x中取出第n个元素作为当前节点的值,然后n加1表示向下递归到下一个节点,如果当前节点的值等于empty,则返回NULL表示当前节点是空节点;否则,创建一个新的BinaryTreeNode节点,将当前节点的值赋给节点的data域,然后递归调用CreateBinaryTree函数创建当前节点的左子树和右子树。因为CreateBinaryTree函数在递归调用时会对参数n进行自增操作,所以这里使用了递归来遍历整个二叉树。
阅读全文