c++中如何构建一个先序二叉树
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要讲解了"c++中如何构建一个先序二叉树",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c++中如何构建一个先序二叉树"吧!第一、定义Bina
千家信息网最后更新 2025年01月22日c++中如何构建一个先序二叉树
这篇文章主要讲解了"c++中如何构建一个先序二叉树",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c++中如何构建一个先序二叉树"吧!
第一、定义BinaryTreeNode 类
#include#include #include using namespace std; template class BinaryTree;template class BinaryTreeNode {public: friend class BinaryTree ; BinaryTreeNode() { data = NULL; lChild = rChild = NULL; } BinaryTreeNode(T newdata) { this->data = newdata; lChild = rChild = NULL; } T getData() { return data; } BinaryTreeNode * getLeftNode() { return lChild; } BinaryTreeNode * getRightNode() { return rChild; } T data; BinaryTreeNode * lChild; BinaryTreeNode * rChild;private: };
View Code
第二、定义BinaryTree 类
templateclass BinaryTree {public: BinaryTreeNode *root; char* p; BinaryTree() { root = NULL; } BinaryTree(T data) { root = new BinaryTreeNode (data); root->lChild = NULL; root->rChild = NULL; } ~BinaryTree() { delete root; } //构建二叉树并返回 BinaryTreeNode * CreateTree() { BinaryTreeNode * bt = NULL; char t; cin >> t; if (t == '#') { return NULL; } else { int num = t - '0'; bt = new BinaryTreeNode (num); bt->lChild = CreateTree(); bt->rChild = CreateTree(); } return bt; } //先序构建二叉树 BinaryTreeNode * PreCreateTree() { BinaryTreeNode * bt = NULL; if (this->root == NULL) { cout << "请输入根节点(#代表空树):"; } else { cout << "请输入节点(#代表空树):"; } char t; cin >> t; if (t == '#') { return NULL; } else { int num = t - '0'; bt = new BinaryTreeNode (num); if (this->root == NULL) { this->root = bt; } cout << bt->data << "的左孩子"; bt->lChild = PreCreateTree(); cout << bt->data << "的右边孩子"; bt->rChild = PreCreateTree(); } return bt; } void preOderTraversal(BinaryTreeNode *bt); //先序遍历 void inOrderTraversal(BinaryTreeNode *bt); //中序遍历 void postOrderTraversal(BinaryTreeNode *bt);//后序遍历 void levelTraversal(BinaryTreeNode *bt); //逐层遍历 private: }; template void BinaryTree ::preOderTraversal(BinaryTreeNode *bt) { if (bt) { cout << bt->data; BinaryTree ::preOderTraversal(bt->getLeftNode()); BinaryTree ::preOderTraversal(bt->getRightNode()); }} template void BinaryTree ::inOrderTraversal(BinaryTreeNode *bt) { if (bt) { BinaryTree ::inOrderTraversal(bt->getLeftNode()); cout << bt->data; BinaryTree ::inOrderTraversal(bt->getRightNode()); }} template void BinaryTree ::postOrderTraversal(BinaryTreeNode *bt) { if (bt) { BinaryTree ::postOrderTraversal(bt->getLeftNode()); BinaryTree ::postOrderTraversal(bt->getRightNode()); cout << bt->data; }} template void BinaryTree ::levelTraversal(BinaryTreeNode *bt) { queue *> que; que.push(bt); while (!que.empty()) { BinaryTreeNode * proot = que.front(); que.pop(); cout << proot->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" int main(){ //场景测试2 BinaryTree btree; btree.PreCreateTree();//先序构建二叉树 cout << "先序遍历:"; btree.preOderTraversal(btree.root); cout << endl;//先序遍历 cout << "中序遍历:"; btree.inOrderTraversal(btree.root); cout << endl;//中序遍历 cout << "后序遍历:"; btree.postOrderTraversal(btree.root); cout << endl;//后序遍历 cout << "逐层序遍历:"; btree.levelTraversal(btree.root); }
View Code
最终测试运行截图
感谢各位的阅读,以上就是"c++中如何构建一个先序二叉树"的内容了,经过本文的学习后,相信大家对c++中如何构建一个先序二叉树这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
c++
学习
内容
孩子
测试
运行
主程序
代表
场景
就是
思路
情况
截图
文章
更多
知识
知识点
篇文章
节点
跟着
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全中的安全事件
使用代理可以过服务器被控制吗
软件开发驱动模型
江苏大数据软件开发代理商
神武冠军服务器
打车软件开发多少钱
服务器返回数据出错
网络安全教育pp
商洛网络安全杨楠
武汉迅天睿网络技术
mc网易怎么免费做服务器
seed数据库
至强e5双cpu做服务器如何
电站网络安全保密制度
戴尔服务器系统安装详解
灌云无忧网络技术排名靠前
杭州未来科技城除了互联网还有啥
数据库技术三级的有效期
服务器需要多大并发
微信协议软件开发猪八戒
合同数据库需要哪些字段
锡山区机电软件开发售后服务
移动福建泉州dns服务器地址
根据网络安全法规定哪项是正确的
武大网络安全专业有什么优势
维护网络安全基础的工作
浙江口碑好的网络技术有哪些
下周关注网络安全
服务器考题
智能运维平台的软件开发