二叉搜尋樹

2021-09-25 22:33:53 字數 966 閱讀 2919

判斷兩序列是否為同一二叉搜尋樹序列

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
題解:判斷兩棵樹是否為同一棵樹時。

方法一:只需要使用同一種方式遍歷,判斷它的左右子樹是否存在,確定形狀,然後判斷節點的值是否相同。

方法二:分別求樹的前中,後中的序列看是否相同。

#include#include#includeusing namespace std;

bool flag;

struct node

;node *insert(node *p,int x)//依次插入每個值

else//當所詢問的點不為空時

}void check(node *root,node *rom)//同時便利標椎樹和待檢查書,以同一種方式遍歷檢查左右子樹是否存在

//同時檢查所遍歷的節點值是否相同,如果不相同肯定不是同乙個子樹。即先確定『行』再判斷值。

else if(root!=null||rom!=null)

flag=0;

}int main()

}return 0;

}

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 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 解釋 輸入為 ...