二叉树的建立
2014-05-12 20:13
155 查看
template<class T> class BiTreeNode { public: T data; BiTreeNode *lchild,*rchild; BiTreeNode():data(0),lchild(NULL),rchild(NULL){} }; template<class T> class BiTree { public: private: vector<BiTreeNode<T>* > _biTree; public: BiTree(vector<T>& vec){buildBiTree(vec);} void buildBiTree(vector<T>&); void TraverseBiTree(); void TraverseTreeNode(BiTreeNode<T>* ); vector<BiTreeNode<T>* > getBiTree(){return _biTree;} }; template<class T> void BiTree<T>::buildBiTree(vector<T>& _vec) { //暂存节点的栈 deque<BiTreeNode<T>*> NodeStack; vector<T>::iterator iter=begin(_vec); BiTreeNode<T>* _root=new BiTreeNode<T>(); _biTree.push_back(_root); _root->data=(*iter); NodeStack.push_back(_root); ++iter; BiTreeNode<T>* pre; for(int count=1;iter!=end(_vec);++iter,++count) { BiTreeNode<T>* new_Node=new BiTreeNode<T>(); _biTree.push_back(new_Node); new_Node->data=(*iter); if(count%2!=0) //lchild { pre=NodeStack.front(); NodeStack.pop_front(); pre->lchild=new_Node; NodeStack.push_back(new_Node); } else //rchild { pre->rchild=new_Node; NodeStack.push_back(new_Node); } } } template<class T> void BiTree<T>::TraverseBiTree() { TraverseTreeNode(*(begin(_biTree))); cout<<endl; } template<class T> void BiTree<T>::TraverseTreeNode(BiTreeNode<T>* _node) { if(_node!=NULL) { TraverseTreeNode(_node->lchild); TraverseTreeNode(_node->rchild); cout<<_node->data<<" "; } } int main() { vector<int> ivec; for(int i=0;i<10;++i) { int n=rand()%10; ivec.push_back(n); } cout<<"before sort"<<endl; for(vector<int>::iterator iter=begin(ivec);iter!=end(ivec);++iter) { cout<<*iter<<" "; } cout<<endl; BiTree<int> bt(ivec); bt.TraverseBiTree(); cout<<endl; return 0; }
相关文章推荐
- 数据结构实验之二叉树的建立与遍历 ( sdut oj2136)
- 二叉树的递归建立
- 二叉树的建立♪♬♫(先序,前中,中后)
- 二叉树的建立,以及非递归遍历
- 二叉树的建立删除及三种遍历实现
- SDUT-数据结构实验之二叉树的建立与遍历
- 1138. Postorder Traversal (25) (根据先序,中序遍历建立二叉树,输出后序的第一个)
- 先序遍历建立二叉树,求保存最大数字的叶子节点到最小数字的叶子结点的距离 2016网易编程题
- 建立平衡二叉树(AVL)
- 二叉树的递归建立以及深度优先遍历
- 通过前序(后序), 中序遍历建立二叉树 求解层次遍历
- NYOJ1063 生活的烦恼(二叉树的建立)
- 二叉树的建立以及前序、中序、后序遍历的递归和非递归实现
- 二叉树的建立,遍历,节点个数,深度
- sdut 2136 数据结构实验之二叉树的建立与遍历
- 建立一棵二叉树
- 二叉树——判断两棵二叉树是否相等(先序和中序遍历序列建立二叉树)
- 编程实现二叉树的建立与遍历
- 定时作业-二叉树的建立与遍历
- 数据结构之二叉树的递归建立和遍历(续)