数据结构——简单二叉树的性质和遍历

二叉树

两个值得注意的性质:

1.二叉树是有序树,这个我想了很久不知道为什么,可是为什么二叉树只有三种遍历方式,而不是六种?说明每个形态不同的树都有不同的含义。那完全二叉树和平衡二叉树呢?也是一样的

2.n0=n2+1 推法: n-1=2n2+n1  n=n0+n1+n2 

遍历

前 中 后序遍历 

#include <iostream>
#include <stdlib.h>using namespace std;typedef struct Node
{struct Node *left;struct Node *right;int data;
} N, Tr;
N *createNode(int data)
{N *a = (N *)malloc(sizeof(N));a->left = a->right = NULL;a->data = data;return a;
}
void pre(Tr *root)
{if (root == NULL)return;cout<< root->data << " ";pre(root->left);pre(root->right);
}
void In(Tr *root)
{if (root == NULL)return;In(root->left);cout << root->data << " ";In(root->right);
}
void aft(Tr *root)
{if (root == NULL)return;aft(root->left);aft(root->right);cout << root->data << " ";
}
int main()
{Tr *root = createNode(3);root->right = createNode(4);root->left = createNode(5);root->left->left = createNode(6);root->left->right = createNode(7);root->right->left = createNode(8);root->right->right = createNode(9);pre(root);cout << endl;In(root);cout << endl;aft(root);cout << endl;
}

栈模拟遍历

void premoni(Tr *root)
{stack<Tr *> number;number.push(root);while (number.size()){Tr *a = number.top();number.pop();cout << a->data << " ";if (a->right != NULL)number.push(a->right);if (a->left != NULL)number.push(a->left);}
}
void Inmoni(Tr *root)
{stack<N *> number;Tr *pnew = root;while (pnew != NULL || number.size()){while (pnew != NULL){number.push(pnew);pnew = pnew->left;}pnew = number.top();number.pop();cout << pnew->data << " ";pnew = pnew->right;}
}
void aftmoni(Tr *root)
{stack<N *> St;stack<int> number;Tr *pnew = root;St.push(root);while (St.size()){pnew = St.top();St.pop();number.push(pnew->data);if (pnew->left != NULL)St.push(pnew->left);if (pnew->right != NULL)St.push(pnew->right);}while (number.size()){cout << number.top() << " ";number.pop();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET/C#汇总 —— 多线程

1.根据线程安全的相关知识,分析以下代码,当调⽤test⽅法时i>10时是否会引起死锁?并简要说 明理由。 public void test(int i) {lock(this){if (i>10){i--;test(i);}} } 不会发⽣死锁,(但有⼀点int是按值传递的,所以每次改变的都只是⼀个副本,因此不会出现死锁。…

Linux 删除文件或文件夹命令(新手)

一、删除文件夹 rm -rf 路径/目录名 1 强制删除文件夹及其子文件。 二、删除文件/文件夹&#xff1a;rm 命令 rm 删除命令&#xff0c;它可以永久删除文件系统中指定的文件或目录。 rm [选项] 文件或目录 选项&#xff1a; -f&#xff1a;强制删除&#xff08;force&am…

前端大屏项目适配方法

要在F11全屏模式下查看 方法一&#xff0c;rem font-size 动态设置HTML根字体大小 和 body 字体大小&#xff08;lib_flexible.js&#xff09; 将设计稿的宽&#xff08;1920&#xff09;平均分成 24 等份&#xff0c; 每一份为 80px。HTML字体大小就设置为 80 px&#xff…

SonarQube 9.9.4 LTS社区版安装

目标 安装个SonarQube社区版. 安装SonarQube9.9.4 LTS社区版 https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip # 切换到安装目录 cd /opt # 下载安装包 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube…

[管理者与领导者-160] :社交策略和智慧-3,如何用积极的语言表达他人的赞美,构建和谐的人际关系

目录 一、用积极的语言表达他人的赞美他人的重要性 1.1 消极语言的危害 1.2 批评性语言的危害 1.3 积极的语言表达他人的赞美他人的重要性 二、有哪些积极的赞美他人的语言&#xff1f; 2.1 有哪些消极性语言 2.2 有哪些积极性语言 2.3 有哪些批评性语言 2.4 有哪些赞…

C语言--结构体大小

基本数据类型占用的字节数分别为:char(1),short(2),int(4),long(4),long long(8),float(4),double(8)。 分析一下下面结构体占用的字节数。 struct A { int a; }; struct B { char a; int b; }; int main() { printf("sizeof(struct A)%d\n", sizeof(struct A));//测…

Nginx小册(博客笔记迁移)

nginx基础 1.常用命令 nginx -v #查看版本 ps -ef | grep nginx #输出linux进程、 nginx #启动nginx进程 nginx -s reload #重载配置 nginx -s stop # 停止进程 nginx -t # 检查是否有语法错误&#xff0c;以及配置文件地址2.nginx的配置文件 # 用户组的设置 windows上不生…

Java面试题:什么是Java的集合框架?详细举例说明常用的集合,及其应用场景

Java的集合框架&#xff08;Java Collections Framework&#xff09;是Java编程语言中提供的一套用于表示和操作集合的统一架构。它包含了一系列接口、类和算法&#xff0c;用于创建和操作集合对象&#xff0c;如列表、集合、映射等。这些集合对象在Java程序中广泛用于存储和组…

支持0V充电700MA线性锂电池充电芯片-YB4055SL

支持0V充电700MA线性锂电池充电芯片 描述&#xff1a; YB4055SL是一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器。其SOT 封装与较少的外部元件数目使得YB4055SL成为便携式应用的理想选择YB4055SL可以适合 USB 电源和适配器电源工作。 由于采用了内部PMOSFET架构&am…

微信小程序 uniapp+vue.js医疗在线问诊挂号系统4oy17

预约挂号系统的逐渐发展&#xff0c;进一步方便了广大用户&#xff0c;使其可以更方便、快捷地预约挂号&#xff0c;并且也有效地防止号贩子“倒号”&#xff0c;使用户预约挂号更公平&#xff0c;然而现有预约挂号系统或多或少有所欠缺 小程序前端框架&#xff1a;uniapp 小程…

AndroidAutomotive模块介绍(三)CarService服务

前言 上一篇文档总结 Android Automotive 框架的 APP 和 API 部分内容&#xff0c;本篇文档将会继续根据 Android Automotive 框架结构&#xff0c;总结 Framework 层 CarService 服务的内容。 本文档对 Android Automotive Framework 层服务将会按照如下顺序展开描述&#x…

windows搭建ftp服务器

安装iis 点击安装即可,搜索iis打开 创建ftp服务器 身份验证&#xff1a;只勾选匿名&#xff0c;不勾选基本&#xff0c;网上的很多教程会添加基本&#xff0c;导致的问题会出现浏览提需要输入账号密码的情况&#xff0c;这里为了方便大家更直观的感受FTP建立的过程&#xff0…

计算机网络技术-双绞线的制作与测试方法

目录 制作方法测试方法 待续、更新中 制作方法 &#xff08;1&#xff09;剥线 (2&#xff09;去除外表皮 &#xff08;3&#xff09;分开双绞线 (4&#xff09;拆分线对 &#xff08;5&#xff09;排列线序 &#xff08;6&#xff09;剪线 &#xff08;7&#xff09;安装RJ-4…

物理服务器与云服务器的租用对比

​ 物理服务器&#xff1a;每个基于 Web 的应用程序都依赖于一个服务器&#xff0c;该服务器提供网络中的数据存储&#xff0c;并可根据请求提供给客户端。例如&#xff0c;用户使用浏览器访问 Web 应用程序。服务器可确保托管客户端可以使用该硬件组件。与其他托管可能性相比&…

MySQL数据库max_allowed_packet参数

如上图所示的报错&#xff0c;我在提交接口的时候出现了这个错误&#xff1a; MySqlConnector.MySqlException:Error submitting 4MB packet;ensure max_allowed_packet is greater than 4MB.在MySQL数据库中&#xff0c;有一个参数叫max_allowed_packet&#xff0c;这个参数会…

nacos服务器挂了之后springboot/springcloud服务会挂吗?不会挂(顺便深入源码分析nacos配置中心客户端核心功能实现)

文章目录 nacos挂了之后服务会挂吗&#xff1f;不会挂&#xff08;深入源码分析&#xff09;展开nacos客户端源码找本地缓存配置相关文件客户端内存缓存客户端健康状态获取配置的实现 nacos挂了之后服务会挂吗&#xff1f;不会挂&#xff08;深入源码分析&#xff09; 展开nac…

云HIS医院管理系统源码,SaaS模式+Java云HIS系统融合B/S版开箱即用

云HIS医院管理系统源码&#xff0c;SaaS模式Java云HIS系统融合B/S版开箱即用 一、云HIS系统简介 SaaS模式Java版云HIS系统&#xff0c;在公立二甲医院应用三年&#xff0c;经过多年持续优化和打磨&#xff0c;系统运行稳定、功能齐全&#xff0c;界面布局合理、操作简便。 云H…

软件供应链安全:寻找最薄弱的环节

在当今的数字时代&#xff0c;软件占据主导地位&#xff0c;成为全球组织业务和创新的支柱。它是差异化、项目效率、成本降低和竞争力背后的驱动力。软件决定了企业如何运营、管理与客户、员工和合作伙伴的关系&#xff0c;以及充分利用他们的数据。 挑战在于&#xff0c;当今…

Java技术学习|SpringBoot面试篇

学习材料声明 黑马程序员黑马程序员SpringBoot3Vue3全套视频教程&#xff0c;springbootvue企业级全栈开发从基础、实战到面试一套通关 经过了基础知识后端开发前端开发&#xff0c;终于到了面试篇。 前置知识 1.ApplicationContextInitializer 首先&#xff0c;SpringBoot…

CentOS7 boa服务器的搭建和配置

环境是CentOS7&#xff0c;但方法不局限于此版系统&#xff0c;应该是通用的。 具体步骤如下&#xff1a; 1. 下载boa源码 下载地址: Boa Webserver 下载后&#xff0c;进入压缩包所在目录&#xff0c;进行解压&#xff1a; tar xzf boa-0.94.13.tar.gz 2. 安装需要的工具b…