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

2021-09-08 22:22:51 字數 1115 閱讀 2066

九度提供的演算法設計思路是:對輸入的數字序列構建二叉排序樹,並對它們進行前序和中序的遍歷,依次比較遍歷結果是否相同,若相同則說明兩棵二叉排序樹相同,否則不同。

這個設計思路是沒有問題的,但是有點畫蛇添足的成份。那麼這個「蛇足」是什麼呢?試想一下二叉排序樹的性質,如果對二叉排序樹來說,對其進行中序遍歷,那麼無論一組數字按照怎樣的順序構建,其中序遍歷後得到的序列都是一樣的。例如題目給的測試例項,和,他們構造的二叉排序樹如下:

其中序遍歷得到序列都是。所以說進行中序遍歷作為判斷的一項是「蛇足」。

對於該題,我們只須對建立的二叉樹進行先序遍歷,或者後序遍歷得到它們的遍歷序列進行比較即可。

原始碼如下:

//

premain儲存原二叉樹先序遍歷的序列

//preother儲存與原二叉樹比較的二叉樹的先序遍歷的序列

char premain[11], preother[11

];struct

bstnode;

bstnode*allocatenode()

else

return

nullptr;

}bstnode* builtbstree(bstnode*t, int

value)

else

if (t->value >value)

t->lchild = builtbstree(t->lchild, value);

else

if (t->value

t->rchild = builtbstree(t->rchild, value);

returnt;}

int size = 0

;void preorderbst(bstnode *root, char

prearray)

if (root->lchild !=nullptr)

if (root->rchild !=nullptr)

}

判斷是否同一棵二叉搜尋樹

給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若干組測試資料。每組資料的第1行給出兩個正整數...

是否同一棵二叉搜尋樹

5 4 是否同一棵二叉搜尋樹 25分 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入包含若干組測試資料。每...

是否同一棵二叉搜尋樹

04 樹4 是否同一棵二叉搜尋樹 25 分 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若...