首页 > 试题广场 >

二叉搜索树

[编程题]二叉搜索树
  • 热度指数:15423 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
判断两序列是否为同一二叉搜索树序列

输入描述:
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。


输出描述:
如果序列相同则输出YES,否则输出NO
示例1

输入

2
567432
543267
576342
0

输出

YES
NO
头像 健康快乐最重要
发表于 2020-02-18 19:48:39
先建树,通过insert()插入节点。二叉搜索树的递归建立的过程如下:插入代码: TreeNode *BuildTree(TreeNode *root,int x){ if(root==NULL) root=new TreeNode(x); else if(root- 展开全文
头像 鱼儿恋上水
发表于 2020-03-20 13:12:43
前序遍历和中序遍历可以唯一确定一棵二叉树,而对二叉排序树而言,相同元素的二叉排序树中序遍历一定相同,而不同元素二叉排序树使用前序遍历就可以发现不相同,所以只需要前序遍历两个二叉树,比较一下就可以判断,下面是代码: #include <iostream> #include <cstd 展开全文
头像 Widdit
发表于 2022-02-13 02:52:22
这道题首先需要建树,然后判断两个二叉搜索树是否相同,这里提供两种思路。 第 1 种思路(通用的思路): 如果两个二叉树都为空,则两个二叉树相同。如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。 如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同,若不相同则两个二叉树一 展开全文
头像 牛客440904392号
发表于 2024-10-05 19:33:59
#include <iostream> using namespace std; struct TreeNode { char val; TreeNode *left; TreeNode *right; TreeNode(char c) : val(c), 展开全文
头像 智慧君
发表于 2023-04-07 15:59:50
//踩坑:1.递归Preorder写错了! //2.idx的++,写成n++ #include <cstring> #include <string> using namespace std; struct Tree { //树的数据结构 注意下面的指针 cha 展开全文
头像 L456
发表于 2024-03-17 11:27:38
#include <bits/stdc++.h> using namespace std; struct Node{ char c; Node *left; Node *right; }; Node *insert(Node *root,char c) { if(root== 展开全文
头像 求求offer的土拨鼠很无聊
发表于 2023-03-06 13:52:04
#include <cstddef> #include <iostream> #include <cstring> using namespace std; struct BStree{ int data; BStree* lchild; 展开全文
头像 爱喝零度可乐
发表于 2023-03-11 15:57:57
#include<cstdio> #include<string> using namespace std; struct TreeNode { char data; TreeNode* LChild; TreeNode* RChild; }; v 展开全文
头像 robin呀
发表于 2022-03-08 16:54:53
leetcode543. 二叉树的直径 ">#include<vector> using namespace std; struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) :va 展开全文
头像 西区梭梭树
发表于 2023-03-14 22:16:19
无论插入的序列如何,中序遍历必定是递增序列,所以是相同的。所以只需要判断前序或后续遍历序列。 #include <iostream> using namespace std; struct node { char data; node* leftChild; no 展开全文