二叉排序樹 oj 2482
Description
二叉排序樹的定義是:或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。 今天我們要判斷兩序列是否為同一二叉排序樹
Input
開始一個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。
接下去一行是一個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉排序樹。
接下去的n行有n個序列,每個序列格式跟第一個序列一樣,請判斷這兩個序列是否能組成同一顆二叉排序樹。(資料保證不會有空樹)
Output
YES/NO
Sample
Input
2
123456789
987654321
432156789
0
Output
NO
NO
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
node *l,*r;
}Tree;
bool flag;
char a[20],b[20];
Tree* Creat(Tree *root ,char x)
{
if(!root)
{
root = new Tree;
root->l = NULL;
root->r = NULL;
root->data = x;
}
else
{
if(x<root->data)
root->l = Creat(root->l,x);
else
root->r = Creat(root->r,x);
}
return root;
}
void Judge(Tree *root1,Tree *root2)
{
if((!root1 && root2) || (root1 && !root2))
{
flag = false;
return ;
}
if(root1 && root2)
{
if(root1->data != root2->data)
{
flag = false;
return ;
}
Judge(root1->l,root2->l);
Judge(root1->r,root2->r);
}
}
int main()
{
ios::sync_with_stdio(false);
int n,len;
while(cin>>n && n!=0)
{
Tree *root1,*root2;
root1 = NULL;
cin>>a;
len = strlen(a);
for(int i=0; i<len; i++)
root1 = Creat(root1,a[i]);
while(n--)
{
root2 = NULL;
flag = true;
cin>>b;
for(int i=0; i<len; i++)
root2 = Creat(root2,b[i]);
Judge(root1,root2);
if(flag)
cout<<"YES\n";
else
cout<<"NO\n";
}
}
return 0;
}
相關文章
- 二叉排序樹排序
- 排序二叉樹和平衡二叉樹排序二叉樹
- 二叉查詢樹(二叉排序樹)排序
- 二叉樹的應用(1)--二叉樹排序樹基本操作二叉樹排序
- js之排序二叉樹JS排序二叉樹
- 【筆記】二叉排序樹筆記排序
- 二叉排序樹(水題)排序
- 判斷某棵二叉樹是否二叉排序樹二叉樹排序
- js實現完全排序二叉樹、二叉搜尋樹JS排序二叉樹
- 二叉排序樹的實現排序
- 二叉排序樹BST及CRUD操作排序
- 建立一棵二叉排序樹排序
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- 二叉樹排序樹的建立,遍歷和刪除二叉樹排序
- 使用javascript實現排序二叉樹(2)JavaScript排序二叉樹
- 使用javascript實現排序二叉樹(1)JavaScript排序二叉樹
- Java-二叉排序樹的刪除Java排序
- 二叉排序樹查詢,插入,刪除排序
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- 一文搞定二叉排序(搜尋)樹排序
- #查詢演算法#【2】二叉排序樹演算法排序
- OJ題之氣泡排序排序
- Python 樹表查詢_千樹萬樹梨花開,忽如一夜春風來(二叉排序樹、平衡二叉樹)Python排序二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 查詢|有序表折半查詢判定樹|二叉排序樹|3階B-樹排序
- 將二叉排序樹BST轉換成排序的雙向連結串列排序
- 資料結構與演算法:二叉排序樹資料結構演算法排序
- 二叉樹 & 二叉查詢樹二叉樹
- 第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序排序二叉樹
- SDUTOJ 2128 樹結構練習——排序二叉樹的中序遍歷排序二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- C語言 遞迴實現二叉排序樹的插入C語言遞迴排序
- 完全二叉樹實現優先佇列與堆排序二叉樹佇列排序
- 什麼是泛型?,Set集合,TreeSet集合自然排序和比較器排序,資料結構-二叉樹,資料結構-平衡二叉樹泛型排序資料結構二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- 二叉樹二叉樹