判斷兩序列是否為同一二叉搜尋樹序列
開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。
接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。
如果序列相同則輸出yes,否則輸出no示例1
2567432
543267
576342
0
yesno
這道題的意思是判斷兩個序列是不是能夠建立起同一棵二叉排序樹。二叉排序樹的中序遍歷序列正好就是建立時的序列。前序遍歷和中序遍歷可以唯一確定一棵二叉樹,而對二叉排序樹而言,相同元素的二叉排序樹中序遍歷一定相同,而不同元素二叉排序樹使用前序遍歷就可以發現不相同,所以只需要前序遍歷兩個二叉樹,比較一下就可以判斷,下面是**
#includeusing namespace std;
struct nodetree[1000];
int size=0;
node * create()
node * build(node* tree,int x)
else if(x>tree->x)
else if(xx)
return tree;
}int coun=0;
void before(node* tree,int a)
int main()
int a[50],b[50];
before(tree,a);
coun=0;
before(tree1,b);
coun=0;
int flag=1;
for(int i=0;i}
if(flag)cout<<"yes"
}}
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...
二叉搜尋樹 修剪二叉搜尋樹
第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...
樹 二叉樹 二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...