二叉排序樹 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;
}
相關文章
- 排序二叉樹和平衡二叉樹排序二叉樹
- js之排序二叉樹JS排序二叉樹
- js實現完全排序二叉樹、二叉搜尋樹JS排序二叉樹
- 二叉排序樹BST及CRUD操作排序
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- 二叉樹排序樹的建立,遍歷和刪除二叉樹排序
- Java-二叉排序樹的刪除Java排序
- 使用javascript實現排序二叉樹(2)JavaScript排序二叉樹
- 使用javascript實現排序二叉樹(1)JavaScript排序二叉樹
- OJ題之氣泡排序排序
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- 一文搞定二叉排序(搜尋)樹排序
- Python 樹表查詢_千樹萬樹梨花開,忽如一夜春風來(二叉排序樹、平衡二叉樹)Python排序二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序排序二叉樹
- 資料結構與演算法:二叉排序樹資料結構演算法排序
- C語言 遞迴實現二叉排序樹的插入C語言遞迴排序
- 什麼是泛型?,Set集合,TreeSet集合自然排序和比較器排序,資料結構-二叉樹,資料結構-平衡二叉樹泛型排序資料結構二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- 資料結構 實驗六(二叉排序樹字元統計)資料結構排序字元
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- 二叉樹二叉樹
- 重學資料結構和演算法(二)之二叉樹、紅黑樹、遞迴樹、堆排序資料結構演算法二叉樹遞迴排序
- 判斷二叉樹是否為滿二叉樹二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 【資料結構虛擬碼】設計判斷一棵二叉樹是否是二叉排序樹的演算法資料結構二叉樹排序演算法
- 【Hash問題】九度OJ 1088:剩下的樹
- 自己動手作圖深入理解二叉樹、滿二叉樹及完全二叉樹二叉樹
- 平衡二叉樹,B樹,B+樹二叉樹
- 二叉樹、B樹以及B+樹二叉樹
- 相同二叉樹和鏡面二叉樹問題二叉樹
- 深入學習二叉樹 (一) 二叉樹基礎二叉樹
- n叉樹vs二叉樹二叉樹
- 樹和二叉樹簡介二叉樹
- Chapter 3 樹與二叉樹APT二叉樹