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 中如何构建一个先序二叉树这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
展开全文