一棵二叉查找树是按二叉树结构来组织的。这样的树可以用链表结构表示,其中每一个结点都是一个对象。结点中除了数据外,还包括域left,right和p,它们分别指向结点的左儿子、右儿子,如果结点不存在,则为NULL。
它或者是一棵空树;或者是具有下列性质的二叉树:
1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉查找树;
显然满足了上面的性质,那么二叉查找树按中序遍历就是按从小到大的顺序遍历,这也就是为什么叫排序树的原因,当然上面的小于和大于都可以根据自己的需求改变的。
二叉查找树的几个常用操作:查找,删除,插入.
HDU 3791:
Problem Description
判断两序列是否为同一二叉搜索树序列
Input
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
Output
如果序列相同则输出YES,否则输出NO
Sample Input
2
567432
543267
576342
0
Sample Output
YES
NO
解释:按顺序插入数字之后,再用二叉树先序遍历判断两颗二叉树是否相同。
Java代码
复制代码 代码如下:
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
BinarySearchTree<Character> root=null;
while(in.hasNext()){
int t=in.nextInt();
if(t==0) break;
root=new BinarySearchTree<Character>();
String result=null;
String result1=null;
String s=in.next();
for(int i=0;i<s.length();i++){
root.insert(s.charAt(i));
}
result=root.printTree(root.getRoot());
for(int i=0;i<t;i++){
root=new BinarySearchTree<Character>();
s=in.next();
for(int j=0;j<s.length();j++){
root.insert(s.charAt(j));
}
result1=root.printTree(root.getRoot());
if(result.equals(result1)) System.out.println("YES");
else System.out.println("NO");
}
}
}
}
class BinaryNode< T extends Comparable<T>> {//二叉查找树节点
BinaryNode< T> left;
BinaryNode< T> right;
T element;
public BinaryNode(T theElement){
this(theElement, null, null);
}
public BinaryNode(T theElement, BinaryNode lt, BinaryNode rt){
element = theElement;
left = lt;
right = rt;
}
public T getElement(){
return this.element;
}
public BinaryNode< T> getLeft(){
return this.left;
}
public BinaryNode< T> getRight(){
return this.right;
}
public String toString(){
return element + "";
}
}
class BinarySearchTree< T extends Comparable<T>>{//二叉搜索树
private BinaryNode< T> root;//根节点
public BinarySearchTree(){//构造函数
root = null;
}
public BinarySearchTree(BinaryNode< T> t){//构造函数
root = t;
}
public void makeEmpty(){
root = null;
}
public boolean isEmpty(){
return root == null;
}
public BinaryNode<T> getRoot(){
return root;
}
public T find(T x){
return find(x, root).element;
}
public void insert(T x){
root = insert(x, root);
}
public void printTree(){
printTree(root);
}
private BinaryNode< T> find(T x, BinaryNode< T> t){//查找操作
if(t == null){
return null;
}
if(x.compareTo(t.element) < 0){
return find(x, t.left);
}
else if(x.compareTo(t.element) == 0){
return t;
}
else{
return find(x, t.right);
}
}
private BinaryNode< T> insert(T x, BinaryNode< T> t){//插入操作
if(t == null){
t = new BinaryNode< T>(x, null, null);
}
else if(x.compareTo(t.element) < 0){
t.left = insert(x, t.left);
}
else if(x.compareTo(t.element) > 0){
t.right = insert(x, t.right);
}
else;
return t;
}
private StringBuffer sb=new StringBuffer();
public String printTree(BinaryNode< T> t){//前序遍历二叉查找树
if(t != null){
sb.append(t.element);
printTree(t.left);
printTree(t.right);
}
return sb.toString();
}
}
相关推荐:
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
文章自动生成AI:助力写作新时代,让创作更高效
SEO符合:提升网站排名的秘诀,助力企业赢在搜索引擎优化的赛道,优化没续费 网站没了
ChatGPT打不开实时问题解决方案:让你的AI助手始终在线,psd 转ai
SEO教育:搜索引擎优化,开启成功职业之路,搜狗SEO排名接单
SEO走动:提升网站流量的关键一步,SEO数据监控宝宝推荐
什么是SEO金融,seo是做什么的 ,ai中转程序
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
ZBlog:开启你的个人网站新时代,轻松搭建与管理,二手手机营销推广方案
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
seo矩阵运营中心是什么,seo矩阵运营中心是什么意思啊 ,北京ai特效
什么是seo模型,seo模块总结 ,ai技术授课
SEO获客的秘诀:如何通过搜索引擎优化提升客户获取能力,厦门seo搜索优化排名
seo灰帽是什么,灰帽是指什么 ,ai绘画六边形
ChatGPT启动时遇到问题?快速解决方案让你畅享智能对话体验,ai如何保存logo
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
seo软件是什么职位,seo用的是什么软件 ,ai感知树
SEO出超:如何通过精准优化实现网站流量大爆发,营销推广方式联系f火15星
SEO刷:让你的网站一夜之间登顶搜索引擎!,独特seo技巧
seo需要了解什么,seo需要学些什么内容 ,ovo ai
seo需要学习什么语言,做seo需要懂什么技术 ,ai软件制作教程
AI.生成重新定义创造力的新纪元
ChatGPT无法打开?这些解决办法让你重新畅享智能对话!,北大写作ai
ChatGPT恢复正常使用时间,提升你的工作与生活效率,联想电脑AI0510
SEO领先-如何借助SEO技术让您的网站脱颖而出,seo是黑客吗
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
为什么seo这么难,seo难嘛 ,ai宁中则
SEO门户:打造高效网站流量的关键利器,创意网站建设要求
ChatGPT可以实现新闻报道的即时自动化生成,怎么更改ai2的图标
AI一键生成文章免费:革新写作方式,提升创作效率
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
为什么“360收录”是你网站推广的必备利器,seo亚马逊
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
seo规范是什么,seo行业标准 ,啊龙ai音乐
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
SEO导航:助力网站提升流量与排名的必备工具,荣昌建筑网站建设
自动写文章的AI,提升效率的创作利器
SEO观看:如何通过优化提升您的网站流量和品牌影响力,龙里网络营销推广
SEO广告:如何借助SEO提升品牌曝光与销售业绩?,网站推广怎么选择
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
为什么选择SEO会员服务,让您的网站流量飞速增长,靖边专业网站建设公司
优化入口:提升网站流量与转化率的秘密武器,琼海关键词排名品牌
什么是seo反连接,网站反链多好还是少好 ,网易ai产品
好用的AI智能工具,让生活与工作更高效!
优化公司:助力企业腾飞的秘密武器,微信营销推广价格多少
AI人物生成:重新定义虚拟形象创作的未来
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
Chatget免费网站版无需登录,畅享无限对话体验!,工业 Ai 视觉检测
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址