当前位置: 首页 > news >正文

树结构及其算法-用链表来实现二叉树

目录

树结构及其算法-用链表来实现二叉树

C++代码


树结构及其算法-用链表来实现二叉树

以链表实现二叉树就是使用链表来存储二叉树,也就是运用动态分配内存和指针的方式来建立二叉树。

使用链表来表示二叉树的好处是节点的增加与删除操作相当容易,缺点是很难找到父节点,除非在每一个节点多增加一个指向父节点的指针。

struct TreeNode {int data;TreeNode* leftNode;TreeNode* rightNode;TreeNode(int tempData, TreeNode* tempLeftNode = nullptr, TreeNode* tempRightNode = nullptr) {this->data = tempData;this->leftNode = tempLeftNode;this->rightNode = tempRightNode;}
};

C++代码

#include<iostream>
using namespace std;struct TreeNode {int data;TreeNode* leftNode;TreeNode* rightNode;TreeNode(int tempData, TreeNode* tempLeftNode = nullptr, TreeNode* tempRightNode = nullptr) {this->data = tempData;this->leftNode = tempLeftNode;this->rightNode = tempRightNode;}
};class Tree {
private:TreeNode* treeNode;
public:Tree() {treeNode = nullptr;}TreeNode* GetTreeNode() {return this->treeNode;}void AddNodeToTree(int* tempData, int tempSize) {for (int i = 0; i < tempSize; i++) {TreeNode* currentNode;TreeNode* newNode;int flag = 0;newNode = new TreeNode(tempData[i]);if (treeNode == nullptr)treeNode = newNode;else {currentNode = treeNode;while (!flag) {if (tempData[i] < currentNode->data) {if (currentNode->leftNode == nullptr) {currentNode->leftNode = newNode;flag = 1;}elsecurrentNode = currentNode->leftNode;}else {if (currentNode->rightNode == nullptr) {currentNode->rightNode = newNode;flag = 1;}elsecurrentNode = currentNode->rightNode;}}}}cout << "完成建立二叉树" << endl;}void Inorder(TreeNode* tempTree) {if (tempTree != nullptr) {Inorder(tempTree->leftNode);cout << tempTree->data << " ";Inorder(tempTree->rightNode);}}
};int main() {int data[]{ 6, 3, 5, 9, 7, 8, 4, 2 };cout << "原始数据:" << endl;for (int i = 0; i < 8; i++)cout << data[i] << " ";cout << endl;Tree* tree = new Tree;tree->AddNodeToTree(data, 8);tree->Inorder(tree->GetTreeNode());return 0;
}

输出结果

http://www.lryc.cn/news/216525.html

相关文章:

  • openwrt(三):在hostapd获取已关联的STA的MAC地址
  • 为何袁世凯要把“元宵节”改为“上元节”?
  • python将图片序列保存成gif
  • UE4用C++修改蓝图对象的属性值
  • 供应商等级:一级、二级和三级供应商之间有什么区别
  • 软考 系统架构设计师系列知识点之净室软件工程(3)
  • 『VUE H5页面 - PDF预览』
  • 使用lua-resty-request库编写爬虫IP实现数据抓取
  • vue-admin-templete项目配置在手机上预览
  • 服务号升级订阅号的流程
  • redhat7.4 安装lnmp操作环境
  • Java判断是否有特殊字符串
  • 服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】
  • 家用小型洗衣机哪款性价比高?公认好用四款内衣洗衣机推荐
  • Sui zkSend,创建链接可直接发送SUI,快来体验吧
  • SQL面试
  • Elasticsearch(一)---介绍
  • Vscode LinuxC++环境配置
  • 【tensorboard打开失败】No dashboards are active for the current data set.
  • 客服管理者如何调动客服人员的积极性?
  • Jenkins自动化部署简单配置
  • Linux————内置命令大全
  • 从用户角度出发,如何优化大数据可视化体验|北京蓝蓝UI设计公司
  • 【vue】封装树形下拉框组件 el-popover+el-tree+el-select
  • docker安装Kafka,SpringBoot整合Kafka
  • MySQL - InnoDB 的事务支持、锁机制
  • Android Studio的笔记--Module新建和使用
  • Git统计个人提交代码行数
  • Collction的List方法,list特有方法,遍历方式,迭代器选择
  • 奇偶校验码和循环冗余码