首页 > 代码库 > c++中树的拷贝构造函数的迭代实现
c++中树的拷贝构造函数的迭代实现
具体思想是通过遍历目标树,保存对应的左右孩子节点位置。以按顺序拷贝对应位置的内容。
这里用先序遍历的原因是为了当要取等待拷贝的节点的左右孩子的位置,可以保证此节点存在。避免访问NULL使程序跳出。
- template<typename T>
- inline BinTree<T>::BinTree(BinTree & binTree)
- {
- BinNodePosi(T) otherTreeNode;
- stack<BinNodePosi(T)>otherBinNodeStack;
- BinNode<T>** selfTreeNode;
- stack<BinNode<T>**>selfBinNodeStack;
- selfBinNodeStack.push(&_root);
- otherBinNodeStack.push(binTree._root);
- while (!otherBinNodeStack.empty())
- {
- selfTreeNode = selfBinNodeStack.top(); selfBinNodeStack.pop();
- otherTreeNode = otherBinNodeStack.top(); otherBinNodeStack.pop();
- *selfTreeNode = new BinNode<T>(otherTreeNode->data, otherTreeNode->parent);
- if (otherTreeNode->rc)
- {
- otherBinNodeStack.push(otherTreeNode->rc);
- selfBinNodeStack.push(&((*selfTreeNode)->rc));
- }
- if (otherTreeNode->lc)
- {
- otherBinNodeStack.push(otherTreeNode->lc);
- selfBinNodeStack.push(&((*selfTreeNode)->lc));
- }
- }
- }
c++中树的拷贝构造函数的迭代实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。