java排序二叉树的比较相等、包含、并、差、保留

java二叉树排序问题~

import java.util.TreeSet;public class StudentTest {public static void main(String[] args) {TreeSet ts=new TreeSet();for(;ts.size(){private String name;private Float hp;private int id;public Student(String name,float hp,int id){ this.name = name;this.hp=hp;this.id=id;}public String toString() {return "(name: "+name+" id: "+id+" hp:"+hp+")";}public int getId() {return id;}public int compareTo(Student stu) {return Integer.compare(this.id, stu.getId());}}

java 判断两个二叉树是否完全相同

包括了创建二叉树,前序遍历输出(递归),比较二叉树是否相同。

[java] view plain copy
package com.yuxin.learn;

import java.util.LinkedList;

public class Main {
private static int[] a1 = { 1, 2, 3, 4, 5, 6 };
private static int[] a2 = { 1, 2, 5, 6, 7 };
private static int[] a3 = { 1, 2, 5, 6, 7 };
private static int[] a4 = { 1, 2, 5, 6, 7, 5, 6 };

private static class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}

public static TreeNode createTree(int a[]) {
int len = a.length;
// 将数组的值依次转为Node节点
LinkedList list = new LinkedList();
for (int i = 0; i < len; i++){
list.add(new TreeNode(a[i]));
}
for (int i = 0; i < len / 2 - 1; i++) {
list.get(i).left = list.get(i * 2 + 1);
list.get(i).right = list.get(i * 2 + 2);
}
// 最后一个父节点可能没有右边孩子
int last = len / 2 - 1;
list.get(last).left = list.get(last * 2 + 1);
if (len % 2 == 1) {
list.get(last).right = list.get(last * 2 + 2);
}
return list.get(0);
}

//递归前序遍历输出二叉树
public static void preOder(TreeNode head){
System.out.print(head.val+" ");
if(head.left!=null) preOder(head.left);
if(head.right!=null) preOder(head.right);
}

//递归判断两个二叉树是否相同
public static boolean isSameTree(TreeNode head1, TreeNode head2) {
if ((head1 == null && head2 != null) || (head1 != null)
&& (head2 == null) || (head1.val != head2.val))
return false;
if (head1.left == null && head1.right == null && head2.left == null
&& head2.right == null && head1.val == head2.val)
return true;
return isSameTree(head1.left, head2.left)
&& isSameTree(head1.right, head2.right);
}

public static void main(String[] args) {

TreeNode head1 = createTree(a1);
System.out.println("Tree1:");
preOder(head1);
System.out.println();

TreeNode head2 = createTree(a2);
System.out.println("Tree2:");
preOder(head2);
System.out.println();

TreeNode head3 = createTree(a3);
System.out.println("Tree3:");
preOder(head3);
System.out.println();

TreeNode head4 = createTree(a4);
System.out.println("Tree4:");
preOder(head4);

System.out.println();
System.out.println("Tree1和Tree2相同吗?" + isSameTree(head1, head2));
System.out.println("Tree2和Tree3相同吗?" + isSameTree(head2, head3));
System.out.println("Tree3和Tree4相同吗?" + isSameTree(head3, head4));
}
}

Java本身有做这方面的类,TreeMap,List等等

Java数据结构中比较两棵二叉树是否相等的函数boolean equals(Object obj...
答:Double没有的,double有 Double是对象,看两个对象是否值相同,调用 equals方法 这也是解决double精度比较的方法。另外还有一种方法,你可以用写一个 double成员属性,然后在eclipse中重写equals方法,你会看到他是怎么处理两个double值是否相同的 sun公司用的是Double.doubleToLongBits(要比较的double值) != ...

二叉排序树可以有相同元素吗
答:对于二叉排序树,是不允许存在相同元素的。原因是二叉排序树是一种有序的二叉树结构,每个节点都有一个唯一的键值。在二叉排序树中,左子树的所有节点的键值都小于根节点的键值,而右子树的所有节点的键值都大于根节点的键值。如果存在相同元素,就会破坏了这种有序性,无法满足二叉排序树的定义。拓展:二...

二叉树先序序列和中序序列相同的条件是什么
答:二叉树的中序遍历是先访问左子树,然后访问自己,最后右子树所以要让上述两个过程一样,唯一的办法就是左子树不存在,也就是对于二叉树上的任意节点,他的左子节点为空。 本回答由提问者推荐 举报| 答案纠错 | 评论 38 8 Irreappearable 采纳率:85% 擅长: 其他编程语言 C/C++ C#/.NET JAVA相关 为您推荐: ...

java数/森林操作 无序树,比较是否相等,忽略孩子结点次序
答:空树、只有根、根+左孩子、根+右孩子、根+左右孩子 满二叉树:只有度为0和度为2的结点,而且每一层的叶子都是满的。完全二叉树:只有度为0和度为2的结点。性质:1、第i层最多有2的i-1次方个结点; 2、深度为k的二叉树最多有2的k次方减1个结点; 3、叶子有n0个、度为2的结点有n2个,...

排序二叉树中是否允许出现相同的数?
答:排序二叉树中没有相同的数值。

二叉树和二叉排序树有啥区别
答:二叉树和二叉排序树区别为:子树结点不同、键值相等不同、子树树型不同。一、子树结点不同 1、二叉树:二叉树的左/右子树上所有结点的值可以大于、等于和小于它的根结点的值。2、二叉排序树:二叉排序树若左/右子树不空,则左/右子树上所有结点的值均小于它的根结点的值。二、键值相等不同 1、...

12个月份的二叉排序树的关键字怎么比较
答:12个月份的二叉排序树的关键字比较方法如下:1、画出一个二叉树。2、第一个数放到根节点。3、比根节点大的数,放到它的右子树中。4、比根节点小的数,放到它的左子树中。5、所有后续要放到数字都遵守上述规则。6、根据规则依次放完序列中的数字就画好了二叉排序树。

什么是二叉判定树?什么是二叉排序树?
答:左、右子树本身又各时一棵二叉排序树。三、查找结果 二叉排序树首先将给定值和根结点的关键字比较,若相等,则查找成功,若不相等,则根据给定值和根结点关键字之间的大小关系,在左子树或右子树上继续进行查找。若查到为空树时,说明该树中没有待查记录,故查找不成功。

二叉排序树怎么构造
答:假设二叉排序树T为空,则创建一个keyword为k的结点。将其作为根结点。否则将k和根结点的keyword进行比较,假设相等则返回,假设k小于根结点的keyword则插入根结点的左子树中,否则插入根结点的右子树中。int InsertBST(BSTNode *p, KeyType k){if(p==NULL){p=(BSTNode*)malloc(sizeof(BSTNode));...

二叉排序树的插入 如果遇到 相同的节点 怎么办
答:二叉排序树不过是提供一种数据结构,如果没有应用,它的存在没有任何意义。所以随便怎么样都行,看你的具体需求。如果你实际应用中允许相同的值,那么向左向右插入都可以,你只要保证你的树在中序遍历时是非严格单调递增即可 如果你实际应用中要求值唯一,那么你的实现应该以某种形式告诉用户,比如说返回某...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网