二叉树:二叉搜索树的创建和插入
二叉搜索树又名二叉排序树。
大概简略的思维导图如下,方便记忆特性
基本二叉搜索树创建过程如下
/*数据结构如下*/
typedef struct tree
{int data;struct tree *left = NULL;struct tree *right = NULL;
}Tree,*TreeNode;/*Node 为二叉树根节点,insert为插入的节点*/
void create_tree(TreeNode *node, Tree *insert) {if ((*node) -> data > insert -> data) {if ((*node) -> left) {create_tree(&(*node) ->left,insert);} else {(*node) -> left = insert;}} else {if ((*node) -> right) {create_tree(&(*node) ->right, insert);} else {(*node) -> right = insert;}}
}
查找某一数值是否存在的过程如下:
bool search(Tree *node, int val) {if (node -> data == val) {return true;} if (node -> data > val) {if (node -> left) {return search(node -> left, val);} else {return false;}} else {if (node -> right) {return search(node -> right, val);} else {return false;}}
}
测试代码如下:
#include <iostream>
#include <stack>
#include <vector>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>using namespace std;typedef struct tree
{int data;struct tree *left = NULL;struct tree *right = NULL;
}Tree,*TreeNode;void create_tree(TreeNode *node, Tree *insert) {if ((*node) -> data > insert -> data) {if ((*node) -> left) {create_tree(&(*node) ->left,insert);} else {(*node) -> left = insert;}} else {if ((*node) -> right) {create_tree(&(*node) ->right, insert);} else {(*node) -> right = insert;}}
}void preOrder(Tree *node, int layer) {if (node == NULL) {return;}for (int i = 0;i < layer; ++i) {cout << "----";}cout << node -> data << endl;preOrder(node -> left,layer + 1);preOrder(node -> right, layer + 1);
}bool search(Tree *node, int val) {if (node -> data == val) {return true;} if (node -> data > val) {if (node -> left) {return search(node -> left, val);} else {return false;}} else {if (node -> right) {return search(node -> right, val);} else {return false;}}
}int main(int argc, char const *argv[])
{Tree *node;TreeNode root;root = (Tree *)malloc(sizeof(tree));root -> data = 8;root -> left = NULL;root -> right = NULL;int n;int tmp;cin >> n;for (int i = 0;i < n; ++i) {node = (Tree *)malloc(sizeof(tree));cin >> tmp;node -> data = tmp;create_tree(&root, node);}cout << "preOrder" << endl;preOrder(root,0);string s = (search(root, 10)==1)?"success":"failed";cout << "\nsearch 10 in tree "<< s << endl;return 0;
}
输出如下:
#输入
5
3 1 19 2 9
#输出
preOrder
8
----3
--------1
------------2
----19
--------9search 10 in tree failed#输入
5
3 1 10 2 9
#输出
preOrder
8
----3
--------1
------------2
----10
--------9search 10 in tree success
相关文章:

ie7和ie8 select使用jquery clone不兼容处理
本文解决方案基于http://blog.csdn.net/zzx3q/article/details/8017794 在ie7和ie8下,用jquery clone复制一个select,复制的select是本体的select初始化时的一个副本,无法复制目前本体select选择。 解决方案: <!DOCTYPE html&g…

c语言中floox的头文件,PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)...
PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)在化工生产中为了分析两个或两个以上参数对生产的影响往往需要进行某些有规律的重复计算。这些计算在程序中可以用赋值语句或条件语句来实现,但从下面的介绍可以看出,这时若采用循(本文共7页)阅读全文&g…

C#Winform+WindowsAPI做个剪贴板无缝自动保存器(视频截图利器)
C#WinformWindowsAPI做个剪贴板无缝自动保存器(视频截图利器) (本文最新代码已上传到GitHub,地址在(https://github.com/bitzhuwei/ClipboardImageSaver)) 利用C#和Window API做了个自动保存剪贴板内的图片的工具&…

Kafka配置SASL/PLAIN认证
1、安装zk,kafka 2、配置server.properties security.inter.broker.protocolSASL_PLAINTEXT sasl.mechanism.inter.broker.protocolPLAIN sasl.enabled.mechanismsPLAIN listenersSASL_PLAINTEXT://0.0.0.0:9092 advertised.listenersSASL_PLAINTEXT://host:9092 3…

二叉树:二叉搜索树的编码和解码
二叉搜索树的编码和解码描述: 编码:即将一个二叉搜索树编码,节点数值转换为字符串 解码:即将一个字符串解码,数值转换为对应的二叉搜索树的节点 过程导图如下: 针对性编码实现如下: /*数字转字符串*/ vo…

springmvc3.2+spring+hibernate4全注解方式整合(一)
<?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xmlns:web"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&…

c 应用程序多语言版本,c – 在win32 API应用程序中实现全球化/多语言功能
Windows上多语言应用程序的基础是使用“资源”.资源是附加在可执行文件末尾的块,它只包含数据,并以非常特定的方式格式化,以便Windows能够解释这些数据.在资源中,您可以找到对话框,字符串表以及版本信息(在资源管理器中文件的属性对话框中显示的信息).您可以通过在Visual C中打…
整数展示分数和整形数的四则运算
文章结束给大家来个序程员笑话:[M] /* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:邱学伟 * 成完日期:2013 年 5 月 4 日 * 版本号:v1.0 * 输入描述:无…

二叉树:二叉搜索树实现 逆序数问题
关于逆序数的问题描述如下: 已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数。 例如: nums [5, 2, 6, 1], count [2, 1, 1, 0]; nums [6, 6, 6, 1, 1, 1], count [3, 3, 3, 0, 0, 0]; nums [5, -7, 9…

C语言文件实验要求,实验教学的目的和要求.doc
实验教学的目的和要求实验教学的目的和要求:通过实验,让学生全面掌握高级语言程序设计的思想与方法,掌握C语言的特点,C语言的语法规则,C语言的数据类型、表达式及控制流程;通过编程,提高程序设计…

这些工作的日子
已经毕业10个月了,工作了9个月,想说我是个刚毕业的大学僧,没有遇到什么社会上的勾心斗角,没有遇到天大的难题,没有看到那种大起大落的景象,一切还是那样平平淡淡的,当看见附近大学的大学僧的时候…

python基础类型
range:生成指定范围内的数字,只在python2中使用,python3中没有此用法 例:生成0-30内的偶数 转载于:https://www.cnblogs.com/gaoyuxia/p/10239421.html

linux系统目录树/内核源码目录树
关于系统目录树和源码目录树的结构图如下 内核版本: centos 7.0 升级内核之后 3.10.0-957-5.1.e17
顺时针打印二维数组C语言递归,按顺时针打印矩阵
存在二种解题思路: 一种是递归解法,一种是层层递进解法图解递归解法如图所示, 一个5*5的矩阵先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图.将3*3的矩阵继续打印最外层,思路与打印最外层思路一样,我们就可以考虑使用递归实现.最后只剩余一个元素,也可以看成一个矩阵,不过不…

降低噪声和电磁干扰的原则
1.尽量采用45折线转载于:https://www.cnblogs.com/asulove/p/3827246.html

翻译:java.util.regex.Pattern
java.util.regex.PatternA compiled representation of a regular expression. A regular expression(正则表达式), specified as a string, must first be compiled into an instance of this class(首先编译成Pattern对象). The…
学习笔记53—Wilcoxon检验和Mann-whitney检验的区别
Wilcoxon signed-rank test应用于两个related samples Mann–Whitney U test也叫Wilcoxon rank-sum test,应用于两个independent samples的情samples size小的时候,是有列表的,sample size大到20左右时,就可以使用正态分布来近似…

s-systemtap工具使用图谱(持续更新)
整体的学习思维导图如下,后续持续更新完善 文章目录安装简介执行流程执行方式stap脚本语法探针语法API函数探针举例变量使用基本应用1. 定位函数位置2. 查看文件能够添加探针的位置3. 打印函数参数(结构体)4. 打印函数局部变量5. 修改函数局…

2014 Super Training #8 C An Easy Game --DP
原题:ZOJ 3791 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode3791 题意:给定两个0-1序列s1, s2,操作t次,每次改变m个位置,求把s1改变为s2的方法总数。解法: DP,s1和s2哪些位置…

qq分享组件 android,移动端,分享插件
移动端,分享插件发布时间:2018-06-26 10:03,浏览次数:762最近有一个活动页需要在移动端浏览器分享网页到微信,QQ。虽然每一个浏览器都有分享到微信的能力,但不是每个都提供接口供网页来调用。及时有提供,浏…

MySQL中更改表操作
2019独角兽企业重金招聘Python工程师标准>>> 添加一列: alter table t_stu add tel char(20); 删除一个列: alter table t_stu drop column tel; 添加唯一约束: alter table t_stu add constraint uk_srname unique(scode); 添加主…

Maven-环境配置
二更 可算搞好了,除了下面外,我找到了setting.xml里面的东西,给出来就好了,简单就是mvn -v弄好后,setting.xml里面写好的话,直接加入,然后让eclipse下载jar包 然后就可以运行网上的基本项目了 1…

分布式存储(ceph)技能图谱(持续更新)
一下为个人结合其他人对分布式存储 所需的技能进行总结,绘制成如下图谱,方便针对性学习。 这里对分布式存储系统接触较多的是ceph,所以在分布式存储系统分支上偏向ceph的学习。 如有分类有问题或者分支不合理,欢迎大家批评指正,目…

android如何查看方法属于哪个类,Android Studio查看类中所有方法和属性
css-关于位置当你设置一个你想要相对的模块为relative 你这个模块为absolute 则你的这个absolute会相对relative的那个模块进行移动.微信公众平台自动回复wechatlib.jar的生成及wechatlib解析微信公众平台出来有一段时日了,官方提供的自动回复的接口调用大致是这么些…

读javascript高级程序设计03-函数表达式、闭包、私有变量
一、函数声明和函数表达式 定义函数有两种方式:函数声明和函数表达式。它们之间一个重要的区别是函数提升。 1.函数声明会进行函数提升,所以函数调用在函数声明之前也不会报错: test(); function test(){ alert(1); } 2.函数表达式不会进行函…

集成公司内部的多个子系统(兼容B/S和C/S),实现单点登录功能的多系统的统一入口功能...
有一句话也挺有意思的,一直在模仿但从未超越过,文章里的技术也都是相对简单的技术,但是实实在在能解决问题,提高效率。现在人都懒得瞎折腾,能多简单就多简单,谁都不希望总是做一些重复的工作,我…

mysql无法远程连接
在mysql的mysql数据库下: select user,host from user;(查看,没有本机的访问权限) grant all privileges on *.* to root"xxx.xxx.xxx.xxx" identified by "密码";(xx为本机ip,%为所有IP) flush privileges; select user,host from …

哈希表的分类,创建,查找 以及相关问题解决
总体的hash学习导图如下: 文章目录定义分类字符hash排序hash链式hash(解决hash冲突)创建链式hash查找指定数值STL map(hash)哈希分类 完整测试代码应用(常见题目)1. 回文字符串(Longest Palindrome&#x…

android 自定义音乐圆形进度条,Android自定义View实现音频播放圆形进度条
本篇文章介绍自定义View配合属性动画来实现如下的效果实现思路如下:根据播放按钮的图片大小计算出圆形进度条的大小根据音频的时间长度计算出圆形进度条绘制的弧度通过Handler刷新界面来更新圆形进度条的进度具体实现过程分析:首先来看看自定义View中定义…

jsp error-page没有生效
1、首页检查web.xml中的配置,确保路径是正确的 <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> 2、然后再检查error.jsp文件内容是否有问题,比如只有<head>&…