c++中如何构建一个先序二叉树

c++中如何构建一个先序二叉树

这篇文章主要讲解了“c++中如何构建一个先序二叉树”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c++中如何构建一个先序二叉树”吧!

第一、定义BinaryTreeNode 类

#include#include#includeusingnamespacestd;templateclassBinaryTree;templateclassBinaryTreeNode{public:friendclassBinaryTree;BinaryTreeNode(){data=NULL;lChild=rChild=NULL;}BinaryTreeNode(Tnewdata){this->data=newdata;lChild=rChild=NULL;}TgetData(){returndata;}BinaryTreeNode*getLeftNode(){returnlChild;}BinaryTreeNode*getRightNode(){returnrChild;}Tdata;BinaryTreeNode*lChild;BinaryTreeNode*rChild;private:};

View Code

第二、定义BinaryTree 类

templateclassBinaryTree{public:BinaryTreeNode*root;char*p;BinaryTree(){root=NULL;}BinaryTree(Tdata){root=newBinaryTreeNode(data);root->lChild=NULL;root->rChild=NULL;}~BinaryTree(){deleteroot;}//构建二叉树并返回BinaryTreeNode*CreateTree(){BinaryTreeNode*bt=NULL;chart;cin>>t;if(t=='#'){returnNULL;}else{intnum=t-'0';bt=newBinaryTreeNode(num);bt->lChild=CreateTree();bt->rChild=CreateTree();}returnbt;}//先序构建二叉树BinaryTreeNode*PreCreateTree(){BinaryTreeNode*bt=NULL;if(this->root==NULL){cout<<"请输入根节点(#代表空树):";}else{cout<<"请输入节点(#代表空树):";}chart;cin>>t;if(t=='#'){returnNULL;}else{intnum=t-'0';bt=newBinaryTreeNode(num);if(this->root==NULL){this->root=bt;}cout<data<<"的左孩子";bt->lChild=PreCreateTree();cout<data<<"的右边孩子";bt->rChild=PreCreateTree();}returnbt;}voidpreOderTraversal(BinaryTreeNode*bt);//先序遍历voidinOrderTraversal(BinaryTreeNode*bt);//中序遍历voidpostOrderTraversal(BinaryTreeNode*bt);//后序遍历voidlevelTraversal(BinaryTreeNode*bt);//逐层遍历private:};templatevoidBinaryTree::preOderTraversal(BinaryTreeNode*bt){if(bt){cout<data;BinaryTree::preOderTraversal(bt->getLeftNode());BinaryTree::preOderTraversal(bt->getRightNode());}}templatevoidBinaryTree::inOrderTraversal(BinaryTreeNode*bt){if(bt){BinaryTree::inOrderTraversal(bt->getLeftNode());cout<data;BinaryTree::inOrderTraversal(bt->getRightNode());}}templatevoidBinaryTree::postOrderTraversal(BinaryTreeNode*bt){if(bt){BinaryTree::postOrderTraversal(bt->getLeftNode());BinaryTree::postOrderTraversal(bt->getRightNode());cout<data;}}templatevoidBinaryTree::levelTraversal(BinaryTreeNode*bt){queue*>que;que.push(bt);while(!que.empty()){BinaryTreeNode*proot=que.front();que.pop();cout<data;if(proot->lChild!=NULL){que.push(proot->lChild);//左孩子入队}if(proot->rChild!=NULL){que.push(proot->rChild);//右孩子入队}}}

View Code

第三、主程序运行

#include"pch.h"#include#include"BinaryTree.h"intmain(){//场景测试2BinaryTreebtree;btree.PreCreateTree();//先序构建二叉树cout<<"先序遍历:";btree.preOderTraversal(btree.root);cout<

View Code

最终测试运行截图

感谢各位的阅读,以上就是“c++中如何构建一个先序二叉树”的内容了,经过本文的学习后,相信大家对c++中如何构建一个先序二叉树这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

发布于 2022-04-15 22:35:16
分享
海报
62
上一篇:C++中如何实现int类型按字节打印输出 下一篇:C++中如何实现左值引用和右值引用
目录

    忘记密码?

    图形验证码