麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

二叉搜索樹實例練習

2019-11-26 16:17:55
字體:
來源:轉載
供稿:網友
一棵二叉查找樹是按二叉樹結構來組織的。這樣的樹可以用鏈表結構表示,其中每一個結點都是一個對象。結點中除了數據外,還包括域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();
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: fc2国产成人免费视频 | 久久99精品久久久久久国产越南 | 成人羞羞视频在线观看免费 | 一级成人黄色片 | 看毛片免费 | 日韩精品免费一区二区三区 | 91福利免费观看 | 黄色视频一级毛片 | 性日本xxx | 一区播放| 久久国产精品久久久久 | 精品久久久久久久久久中文字幕 | 海角在线观看91一区二区 | 免费在线成人网 | 久草在线免费看 | 欧美精品一区二区久久 | 午夜天堂在线视频 | 日本韩国欧美一级片 | 久久成人在线观看 | 国产精品成人免费一区久久羞羞 | 高清国产午夜精品久久久久久 | 国产伊人色 | 一本视频在线观看 | 欧美成年人在线视频 | 国产99精品视频 | 国产成人在线免费观看视频 | 黄色毛片a级 | 91看片在线播放 | 在线观看中文字幕国产 | 久久无毛| 国产毛片aaa一区二区三区视频 | 国产99精品| 午夜激情视频免费 | 无码av女优 | 国产一级一区二区 | 久久亚洲精品国产一区 | a级黄色片视频 | 91久久精品一区二区 | 国产va在线观看免费 | 国产91免费看 | 久久福利电影网 |